在Linux环境下可以通过cron及at配置任务计划。cron是Linux的内置服务,可以通过在/etc/rc.d/cr.local文件中添加/sbin/service crond start让其自启动。service crond [restar] [start] [stop] [reload]。cron的基本格式为:
* * * * * [user] command
分 时 日 月 周 [用户] 命令
第一列表示分钟(1-59)每分钟用*或者*/1表示
第二列表示小时(1-23)0表示0点
第三列表示日期(1-31)
第四列表示月份(1-12)
第五列表示星期(0-6)0表示星期日
第六列表示执行命令的用户,为可选项,普通用户不能指定运行命令的账户
第七列表示要执行的命令
除了数字意味还有几个特殊符号 * / - , *表示所有取之范围内的数字,/表示每的意思,例如*/5表示每5个单位,-表示取值范围,从某个值到某个值,而,表示离散的取值例如 1,3,7
cron的设置有两种方式:直接编辑/etc/crontab和使用crontab命令,直接编辑/etc/crontab文件是针对系统的任务计划,crontab命令是针对用户的,一般来说每个用户都可以通过crontab -e设置自己的cron,但是管理员也可以通过一些设置,限制普通用户使用cron。
[oracle@HZCC-SRV-NEW1 root]$ 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
以上红色字体部分是cron运行的shell环境设置,cron守护进程每分钟都检查/etc/crontab,/etc/cron.d,/var/spool/cron目录中的改变。任务执行结果无论成功与否都会给用户发送邮件,如果不想收邮件,可以通过在每一行空一格后添加 > /dev/null 2>&1。使用crontab -e 添加的用户自有的任务计划是存储在/var/spool/cron/crontabs/username,username为用户名。
控制cron的使用,通过编辑/etc/cron.allow和/etc/cron.deny控制用户对cron的使用。当cron.allow存在时,只有其中列出的用户可以使用cron,而cron.deny将被忽略。当cron.allow不存在时,cron.deny中列出的用户将不允许使用cron。
Linux还提供了at命令来运行一次性的任务,具体就不做详细介绍了,可以参考man文档。与cron类似,at也可以用/etc/at.allow和/etc/at.deny来控制用户的使用。