at是仅执行一次的工作调度,而cron是周期性地执行工作调度,也可以说是例行性工作。

一、At:
要使用at,首先要有运行一个atd守护进程。
1、atd选项:
-l load_avg:可指定负载限额。超出这个值batch就不会工作
-b batch_interval:指定两个batch jobs之间的最小间隔,以秒为单位。


/var/spool/atjobs:用来存储jobs,owner和group都为daemon,权限1770.其他用户执行at时以daemon的组身份执行。
/var/spool/atspool:用来存储输出,owner和group都为daemon,权限1770

at.allow文件存在,则只有这文件中记录的用户可以使用at。若不存在,则检查at.deny文件,不属于此文件中记录的用户可以使用at。若都没有则只有root可以使用。

2、at:在指定的时间运行命令。
at的时间格式有很多,具体可以看/usr/share/doc/at/timespec
-m:当job完成后发送mail给用户。
-l:显示用户定义的job
-d:删除job
-c:显示job的具体命令内容

3、batch:当系统负载低于限额时执行命令。

二、cron
cron.allow,cron.deny文件和at.allow,at.deny相同。

用户使用crontab来新建工作调度后,该工作就被记录到/var/spool/cron/crontabs中对应的用户名文件。
crontab选项:
-u:只有root可用,帮用户新建和删除jobs。
-e:编辑jobs
-l:显示jobs
-d:删除所有jobs

但是crond只适用于全天开机的情况下适用,对于经常需要关机的电脑来说,就需要使用anacron。anacron以天为单位或是在开机后立刻进行anacron操作,它会去检测停机期间应该进行而没有进行的crontab工作,并将其执行。


三、anacron
anacron不像cron,它并不假设系统是不简短运行的,因此它可以被用在哪些并非一天24小时都开机的系统上执行周期性的工作。
当anacron运行时,它会读取配置文件来查看相应的工作设置的间隔天数,如果天数超过则根据设置的延迟时间,延迟相应的时间后执行,执行结束就退出。为了比较现在的时间与上次执行的时间,anacron有一个时间记录文件。
anacron选项:
-u:仅更新时间记录文件的时间戳,不进行任何工作。
-s:依次执行工作,在前一个结束前不会执行下一个。若不加,则只要延迟一过就开始执行,各工作之间是独立的。
-n:立刻开始执行,不进行延迟
/etc/anacrontab:设定工作的文件
/var/spool/anacron:用来存储时间戳文件。