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.