例行性工作排程--crontab、anacrontab

时间:2023-01-15 07:57:16

1、语法:
[root@www ~]# crontab [-u username] [-l|-e|-r]
选项与参数:
-u  :只有 root 才能进行这个任务,亦即帮其他使用者建立/移除 crontab 工作排程;
-e  :编辑 crontab 的工作内容
-l  :查阅 crontab 的工作内容
-r  :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑。

代表意义 分钟 小时 日期 月份 周                                指令
数字范围 0-59 0-23 1-31 1-12 0-7(0 或 7 时,都代表‘星期天’)

2、数字中特殊符号含义:
*  任何时间
,  或的意思,举例来说,如果要下达的工作是 3:00 与 6:00 时,就会是: 0 3,6 * * * command
-  时间范围
/n ‘每隔 n 单位间隔’的意思

3、易混淆概念
执行文件是:/usr/bin/crontab,每分钟都会去扫描/etc/crontab 与 /var/spool/cron 里面的资料内容。

crontab -e  建立的是用户自己的例行工作,建立后会出现/var/spool/cron/ 里;
vi /etc/crontab  建立的是系统的例行工作,如执行目录下所有可执行脚本,如01  *  *  *  *   root      run-parts /etc/cron.hourly表示每小时执行一下cron.hourly目录下所有可执行的脚本。

4、安全性控制
/etc/cron.allow:
将可以使用 crontab 的帐号写入其中,若不在这个档案内的使用者则不可使用 crontab;

/etc/cron.deny:
将不可以使用 crontab 的帐号写入其中,若未记录到这个档案当中的使用者,就可以使用 crontab。

都是一行一个帐号,/etc/cron.allow 比 /etc/cron.deny 要优先,而判断上面,这两个档案只选择一个来限制而已,因此,建议你只要保留一个即可, 免得影响自己在设定上面的判断!一般来说,系统预设是保留 /etc/cron.deny , 你可以将不想让他执行 crontab 的那个使用者写入 /etc/cron.deny 当中。

当使用者使用 crontab 这个指令来建立工作排程之后,该项工作就会被纪录到 /var/spool/cron/ 里面去了,而且是以帐号来作为判别的。不要使用 vi 直接编辑该档案, 因为可能由于输入语法错误,会导致无法执行 cron。

5、日志查看:/var/log/cron,里面有多个备份,一周一个,当前的就是cron

6、服务重启:/etc/crontab 之后,可能并不会马上执行, 这个时候请重新启动 crond 这个服务吧!‘/etc/init.d/crond restart’

7、注意事项:
周与日月不可同时并存,不可使用“几月几号且为星期几”的模式工作。

8、anacron--开机后立刻进行 anacron 的动作,他会去侦测停机期间应该进行但是并没有进行的 crontab 任务,并将该任务执行一遍后,anacron 就会自动停止了,这是由于 anacron 会以一天、七天、一个月为期去侦测系统未进行的 crontab 任务。一般默认设置就可以了。

配置文件:/etc/anacrontab,语法再参见别的手册。

要确定 anacron 是否开机时会主动的执行,你可以下达下列指令:[root@www ~]# chkconfig --list anacron