crontab命令

查看定时任务列表

  1. crontab -l

查看Crontab状态

  1. service crond status
  2. systemctl status cron # ubuntu
  3. ntsysv #查看crontab服务是否已设置为开机启动
  4. chkconfig –level 35 crond on #加入开机自动启动

查看日志

  1. ubuntu中定时日志通常在:
  2. /var/log/cron.log
  3. 以上cron没有的话,可通过以下命令查看:
  4. grep CRON /var/log/syslog
  5. # 查看 cron 服务的完整日志
  6. journalctl -u crond.service # centos
  7. journalctl -u cron.service # ubuntu
  8. # 实时跟踪 cron 日志(类似 tail -f)
  9. journalctl -u crond.service -f # centos
  10. journalctl -u cron.service -f # ubuntu

添加/编辑/删除定时任务:

  1. 编辑:
  2. crontab -e
  3. 删除:crontab -e后 用dd命令删除后,wq命令保存
  4. i #默认文字编辑器为vim,按i字母键即可添加cron任务
  5. 30 3 * * * /usr/local/etc/rc.d/lighttpd restart #将命令代码放入,此命令意义为每天的03:30 重启apache
  6. ESC #按ESC键退出编辑模式
  7. :wq #键入:wq保存
  8. service crond restart # 重启crontab服务
  9. systemctl restart cron # ubuntu
  1. - - - - -
  2. | | | | |
  3. | | | | +——- 星期中星期几 (0 - 6) (星期天 为0)
  4. | | | +————— 月份 (1 - 12)
  5. | | +———————- 一个月中的第几天 (1 - 31)
  6. | +—————————— 小时 (0 - 23)
  7. +————————————- 分钟 (0 - 59)

示例

  1. * * * * * # 表示每1分钟
  2. */2 * * * * # 表示每2分钟
  3. 0 */2 * * * # 表示每2个小时第0分钟

在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:

  1. 0 6-12/3 12 /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name:

  1. 0 17 1-5 mail -s “hi” alex@domain.name < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分….执行 echo “haha”:

  1. 20 0-23/2 echo “haha”

下面再看看几个具体的例子:

  1. */30 * * * * /usr/sbin/ntpdate cn.pool.ntp.org #每半小时同步一下时间
  2. 0 */2 * * * /sbin/service httpd restart #每两个小时重启一次apache
  3. 50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
  4. 50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
  5. 0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘
  6. 1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件
  7. 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
  8. 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
  9. 30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每晚的21:30 重启apache
  10. 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日的4 : 45重启apache
  11. 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart #每周六、周日的1 : 10重启apache
  12. 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart #每天18 : 00至23 : 00之间每隔30分钟重启apache
  13. 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart #每星期六的11 : 00 pm重启apache
  14. * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart #晚上11点到早上7点之间,每隔一小时重启apache
  15. * */1 * * * /usr/local/etc/rc.d/lighttpd restart #每一小时重启apache
  16. 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart #每月的4号与每周一到周三的11点重启apache
  17. 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart #一月一号的4点重启apache