最近有个客户发来邮件说crontab有错误日志,查看了一下,是因为系统上装了syslog-ng导致crontab没有权限写相关的日志。crontab在工作中经常用到,但是还不是十分的了解,今晚有空,翻开鸟哥的书在看看

     用户想要建立例行性命令时,使用crontab命令。不过为了安全,可以限制使用crontab的用户账号,使用的限制数据有:

     /etc/cron.allow:记录允许使用crontab的账号

     /etc/cron.deny:记录不允许使用crontab的账号

     /etc/cron.allow要比/etc/cron.deny优先,在判断上,这两个文件只选择一个来限制而已,因此建议只保留一个即可,系统默认值保留/etc/cron.deny,一行一个账号

     crontab的工作会被记录到/var/spool/cron/这个目录中,而起是以账号来识别的,例如root使用crontab后被记录到/var/spool/cron/root这个文件中。另外/var/log/cron会记录每个用户执行cron的记录

     crontab的语法:

     -u:只有root才能执行这个任务,即帮助其他用户建立/删除crontab;

     -e:编辑crontab的工作内容

     -l:查看crontab的工作内容

     -r:删除所有crontab的工作内容

     [root@foxflypro ~]#crontab -e

     0  12  *  *  * mail dmtsai -s "at 12:00" <  /home/dmtsai/.bashrc

     分 时  日 月 周

时间参数的含义
代表含义 分钟 小时 日期 月份
数字范围 0-59 0-23 1-31 1-12 0-7

      当周围0或7时,都表示星期天,另外还有一些辅助的字符,如:

      *:表示任何时间都接受

      ,:表示分割时段的意思,如:0 3,6 * * * command

      -:表示一段时间范围,如8点到12点:20 8-12 * * * command 

      /n:表示每隔n单位时间,如:*/5 * * * * command

      下面来介绍一下/etc/crontab这个文件

      [root@foxflypro ~]# cat /etc/crontab 

      SHELL=/bin/bash

      PATH=/sbin:/bin:/usr/sbin:/usr/bin

      MAILTO=root

      HOME=/

      # run-parts

      01 * * * * root run-parts /etc/cron.hourly

      02 4 * * * root run-parts /etc/cron.daily

      22 4 * * 0 root run-parts /etc/cron.weekly

      42 4 1 * * root run-parts /etc/cron.monthly

      MAILTO=root:表示当发生错误或标准输出时会将消息或屏幕显示的消息传递给谁。PATH=/sbin:/bin:/usr/sbin:/usr/bin 表示搜索路径,不需要多说了吧。# run-parts后面的目录中有个root表示系统会以root身份执行后面目录下所有可执行的文件,所以可以将每天需要执行的命令直接写到/etc/cron.daily中,并不需要crontab -e

      如果有很多crontab都是每个5分钟执行一次,可以想到在某个时间段,系统会变得非常繁忙,所以这个时候就需要分别设置,可以这样做:

[root@foxflypro ~]# vim /etc/crontab 

1,6,11,16,21,26,31,36,41,46,51,56 * * * * root CMD1

2,7,12,17,22,27,32,37,42,47,52,57 * * * * root CMD1

3,8,13,18,23,28,33,38,43,48,53,58 * * * * root CMD1

4,9,14,19,24,29,34,39,44,49,55,59 * * * * root CMD1