1 非周期性计划任务
at 是非周期性计划任务的命令。使用它之前必须开启 atd 服务,该服务默认关闭。
service atd start
chkconfig atd on
[root@www ~]# at 08:08 2008-08-08
at> /sbin/shutdown -h now
at> <EOT> <- Ctrl+D
job 1 at 2008-08-08 23:00
[root@www ~]# at now + 5 minutes
at> /sbin/shutdown -h now
at> <EOT>
job 2 at 2008-08-08 08:08
at -c (jobnumber) # 查看任务
atq # 查看任务队列
atrm (jobnumber) # 移除任务
要么使用环境变量,要么使用绝对路径。
batch 是特殊的 at 命令,当系统空闲即 CPU 负载小于 0.8 时,它才会执行。负载是 CPU 在单一时间点所负责的工作数量,不是 CPU 使用率。
2 周期性计划任务
crontab 是周期性计划任务的命令。
crontab -e # 编辑当前用户的任务列表
crontab -l # 查看当前用户的任务列表
vim /etc/crontab # 编辑系统的任务列表
条目基本语法 * * * * * command
,周与日月不可并存,最小计时单位为分。
同上,要么使用环境变量,要么使用绝对路径。
anacron 是特殊的 crontab 命令,用于亡羊补牢,即检测停机期间未能如期执行的任务并将它们执行一遍。
3 流程
at 命令的计划任务保存在 /var/spool/at/
目录下,等待 atd 取用; crontab 命令的计划任务保存在 /var/spool/cron/
目录下,等待 crond 取用。 /var/spool/cron/
目录按用户划分子目录,如 xxx 的周期性计划任务保存在 /var/spool/cron/xxx
目录下。文件禁止 vi 编辑。允许以文件的形式导入计划任务表,导入后完全覆盖原有内容。
/etc/at.allow
和 /etc/at.deny
控制 at 命令的权限;/etc/cron.allow
和 /etc/cron.deny
控制 crontab 命令的权限。 /etc/xxx.allow
的优先级高于 /etc/xxx.deny
,若两者皆无,则仅允许 root 执行。建议二选一,系统默认 /etc/xxx.deny
。
输出结果以邮件的形式发送到本地邮箱。本地邮箱可以用系统命令 mail 查看,如果找不到该命令,就安装一个 mailx(mailutils)
。
我们还可以借助 Thunderbird 更友好地交互,设置方法比较特别,步骤如下:
- 取消所有向导。
Alt+E
编辑,账户设置。- 点开 Account Actions 添加其它账户。
- Unix Mailspool ,下一步。
- 填写收件表单,用户名就是本地用户名。下一步。
- 填写发件表单,随意填写,如
stmp.localhost
。下一步。 - 确认账户名称,下一步。
- 完成设置,开始收件。