IT人学会写cron,减小你的工做量!

crontab命令常见于Unix类Unix操做系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供以后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。
linux


一般,crontab储存的指令被守护进程激活, crond经常在后台运行,每一分钟检查是否有预约的做业须要执行。这类做业通常称为cron jobsvim


crontab命令的功能是在必定的时间间隔调度一些命令的执行。缓存

在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每bash

个用户能够创建本身的调度crontab。
crontab命令有三种形式的命令行结构:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u [-e|-l|-r]
第一个命令行中,file是命令文件的名字。若是在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;若是在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。
命令行中-r选项的做用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;
命令行中-l选项的做用是显示用户crontab文件的内容。
使用命令crontab -u user -e命令编辑用户user的cron(c)做业。用户经过编辑文件来增长或修改任何做业请求。
执行命令crontab -u user -r便可删除当前用户的全部的cron做业。
做业与它们预约的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,不管是标准输出仍是错误输出,都将以邮件形式发给用户。文件里的每个请求必须包含以spaces和tabs分割的六个域。前五个字段能够取整数值,指定什么时候开始工做,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。
第一道第五个字段的整数取值范围及意义是:
0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
/usr/lib/cron/cron.allow表示谁能使用crontab命令。若是它是一个空文件代表没有一个用户能安排做业。若是这个文件不存在,而有另一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可使用crontab命令。若是它是一个空文件代表任何用户均可安排做业。两个文件同时存在时cron.allow优先,若是都不存在,只有超级用户能够安排做业。
任务调度的crond常驻命令
crond 是linux用来按期执行程序的命令。当安装完成操做系统以后,默认便会启动此任务调度命令。crond命令每分锺会按期检查是否有要执行的工做,若是有要执行的工做便会自动执行该工做。而linux任务调度的工做主要分为如下两类:
一、系统执行的工做:系统周期性所要执行的工做,如备份系统数据、清理缓存
二、我的执行的工做:某个用户按期要作的工做,例如每隔10分钟检查邮件服务器是否有新信,这些工做可由每一个用户自行设置。
1、任务调度设置文件的写法
其格式以下:
Minute Hour Day Month Dayofweek command
分钟小时天月天每星期命令
每一个字段表明的含义以下:
Minute 每一个小时的第几分钟执行该任务
Hour 天天的第几个小时执行该任务
Day 每个月的第几天执行该任务
Month 每一年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段之外,其它字段皆为可选字段,可视须要决定。对于不指定的字段,要用“*”来填补其位置。
举例以下:
一、指定每小时的第5分钟执行一次ls命令
5 * * * * ls
二、指定天天的 5:30 执行ls命令
30 5 * * * ls
三、指定每个月8号的7:30分执行ls命令
30 7 8 * * ls
四、指定每一年的6月8日5:30执行ls命令
30 5 8 6 * ls
五、指定每星期日的6:30执行ls命令
30 6 * * 0 ls
注:0表示星期天,1表示星期1,以此类推,也能够用英文来表示,sun表示星期天,mon表示星期一等。
六、每个月10号及20号的3:30执行ls命令
30 3 10,20 * * ls
注:“,”用来链接多个不连续的时段
七、天天8-11点的第25分钟执行ls命令
25 8-11 * * * ls
注:“-”用来链接连续的时段
八、每15分钟执行一次ls命令
*/15 * * * * ls
即每一个小时的第0 15 30 45 60分钟执行ls命令
九、每月中,每隔10天6:30执行一次ls命令
30 6 */10 * * ls
即每个月的一、十一、2一、31日是的6:30执行一次ls命令。
十、天天7:50以root 身份执行/etc/cron.daily目录中的全部可执行文件
50 7 * * * root run-parts /etc/cron.daily
注:run-parts参数表示,执行后面目录中的全部可执行文件。
2、新增调度任务
新增调度任务可用两种方法:
一、在命令行输入: crontab -e 而后添加相应的任务,wq存盘退出。
二、直接编辑/etc/crontab 文件,即vim /etc/crontab,添加相应的任务。
3、查看调度任务
crontab -l //列出当前的全部调度任务
crontab -l -u jp  //列出用户jp的全部调度任务
4、删除任务调度工做
crontab -r //删除全部任务调度工做
5、任务调度执行结果的转向
例1:天天5:30执行ls命令,并把结果输出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
注:2>&1 表示执行结果及错误信息。
编辑/etc/crontab 文件配置cron
  cron服务每分钟不只要读一次/var/spool/cron内的全部文件,还须要读一次/etc/crontab,所以咱们配置这个文件也能运用cron服务作一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。服务器

此文件的文件格式是:
  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root //若是出现错误,或者有数据输出,数据做为邮件发给这个账号
  HOME=/ //使用者运行的路径,这里是根目录
  # run-parts
  01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
  02 4 * * * root run-parts /etc/cron.daily //天天执行/etc/cron.daily内的脚本
  22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
  42 4 1 * * root run-parts /etc/cron.monthly //每个月去执行/etc/cron.monthly内的脚本
  你们注意"run-parts"这个参数了,若是去掉这个参数的话,后面就能够写要运行的某个脚本名,而不是文件夹名了
at命令的用法
At
列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。
at [\\computername] [[id] [/delete] | /delete [/yes]]
at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command
参数

若是在没有参数的状况下使用,则 at 列出已计划的命令。
\\computername
指定远程计算机。若是省略该参数,命令将安排在本地计算机。
id
指定指派给已计划命令的识别码。
/delete
取消已计划的命令。若是省略了 id,计算机中已计划的命令将被所有取消。
/yes
当删除已计划的事件时,对系统的查询强制进行确定的回答。
time
指定运行命令的时间。将时间以 24 小时标记(00:00 [午夜] 到 23:59)的方式表示为小时:分钟。
/interactive
容许做业与在做业运行时登陆用户的桌面进行交互。
/every:date[,...]
在每一个星期或月的指定日期(例如,每一个星期四,或每个月的第三天)运行命令。将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。若是省略了 date,将假定为该月的当前日期。
/next:date[,...]
在重复出现下一天(例如,下个星期四)时,运行指定命令将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。若是省略了 date,将假定为该月的当前日期。
command
指定要运行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令须要路径做为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。若是命令在远程计算机上,请指定服务器和共享名的 UNC 符号,而不是远程驱动器号。若是命令不是可执行 (.exe) 文件,必须在命令前加上 cmd /c,例如:
cmd /c dir > c:\test.out
体验Windows 系统内置的AT命令
  AT命令是Windows 中内置的命令,它也能够媲美Windows中的“计划任务”,并且在计划的安排、任务的管理、工做事务的处理方面,AT命令具备更强大更神通的功能。AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
  咱们能够在“开始→运行”中输入AT命令,下面就来看看AT命令的一些实例分析。
  一、定时关机
  命令:at 21:00 ShutDown –S –T30
  该命令运行后,到了21:00点,电脑会出现“系统关机”对话框,并默认30秒延时自动关机。
  二、定时提醒
  命令:at 12:00 Net Send 192.168.2.2与朋友约会的时间到了,快点准备出发吧!
  其中Net Send是Windows内部程序,能够发送消息到网络上的其余用户、计算机。192.168.2.2是本机电脑的IP地址。网络

 这个功能在Windows中也称做“信使服务”。
  三、自动运行批处理文件
  若是公司的数据佷重要,要求在指定的日期/时间进行备份,那么运行:
  命令:at 1:00AM /Every:Saturday My_BackUp.bat
  这样,在每一个Saturday(周六)的早上1:00点,电脑定时启动My_BackUp.bat批处理文件。My_BackUp.bat是一个你自行编制的批处理文件,它包含能对系统进行数据彻底备份的多条命令。
  四、取消已经安排的计划
  命令:at 5 /Delete
  有时候,你已经安排好的计划可能临时变更,这样你能够及时地用上述命令删除该计划(5为指派给已计划命令的标识编号),固然,删除该计划后,能够从新安排!ide

掌握了这些对你的工做有很大的帮助!!url

相关文章
相关标签/搜索