1、cron是一个Linux/Unix/Mac OSX下的定时执行工具,定时地运行任务task

类Unix缺省会启动crond进程,crond进程不需要用户启动、关闭
Mac上的cron路径为: /usr/sbin

2、Linux系统会在/var/spool/cron/文件夹下生成一个用户名对应的文件,该文件只能通过crontab -e命令进行编辑

cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此该文件修改后不需要重新启动cron服务。

3、cron命令

# 启动/关闭服务/重启
/sbin/service crond start/stop/restart

# 重新载入配置
/sbin/service crond reload

# crontab配置文件操作
# 编辑修改 crontab 文件,如果文件不存在会自动创建
crontab -e 

# 查看
crontab -l 

# 删除
crontab -r

# 某用户的服务
crontab -u

# 举例
# root查看自己的cron设置
crontab -u root -l

# 删除fred的cron设置
crontab -u fred -r 

4、crontab表达式

crontab 文件的格式
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
o minute: 区间为 0 – 59
o hour: 区间为0 – 23
o day-of-month: 区间为0 – 31
o month: 区间为1 – 12. 1 是1月. 12是12月.
o Day-of-week: 区间为0 – 7. 周日可以是0或7.

除了数字还有几个个特殊的符号:

“星号”:所有的取值范围内的数字
“/”:每的意思,"*/5"表示每5个单位
“-”:从某个数字到某个数字,
“,”:分开几个离散的数字。

4.1、示例

#每一小时执行
* */1 * * * /usr/local/etc/rc.d/lighttpd restart

#晚上11点到早上7点之间,每隔一小时执行
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

#每月的4号与每周一到周三的11点执行
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

#一月一号的4点执行
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

#每天5点执行
0 5 * * * /root/bin/backup.sh

#每天晚上20:45关机
45 20 * * * /usr/sbin/shutdown now

#每个工作日(Mon – Fri) 11:59 进行备份
59 23 * * 1,2,3,4,5 /root/bin/backup.sh
59 23 * * 1-5 /root/bin/backup.sh

#每5分钟执行
*/5 * * * * /root/bin/check-status.sh

#每月1号 13:10执行
10 13 1 * * /root/bin/full-backup.sh

#每天18 : 00至23 : 00之间每隔30分钟执行
0,30 18-23 * * * /root/bin/full-backup.sh

#在12月内, 每天的早上6点到12点中,每隔3个小时执行
0 6-12/3 * 12 * /usr/bin/backup

#周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

#每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"

#每天的0点、13点、18点、21点都执行一次
0 0 0,13,18,21 * * ?

Q.E.D.


行走在天地间自由的灵魂