9.8. 调度异步任务:anacron
anacron
用于不能全天候开机的电脑,替代完成 cron
命令的守护进程。由于常规的计划任务通常被安排在午夜执行,如果计算机当时没有开机就不会运行这些任务。 anacron
的目的就在于运行这些计划任务,并考虑计算机关机时间。
请注意 anacron
会在启动机器之后,频频执行此类活动,有可能导致计算机反应迟缓。这也正是/etc/anacrontab
文件中的任务以 nice
命令开头的原因,这样可以减小它们执行优先级进而限制它们对系统的影响。注意,该文件的格式和 /etc/crontab
不完全相同;如果对 anacron
有特殊需求设定,可参看 anacrontab(5) 手册。
回到基础 优先级和 nice
Unix 系统(包括Linux)都是多任务,多用户系统。实际上,几个进程可以并行执行,而且属于不同的用户:内核隔离并管理不同进程对资源的访问。作为完成该任务的一部分,就产生了优先级的概念,它允许按需求将某些进程排在其他进程前面。如果已知一个进程可以在低优先级运行,可以通过 nice *程序*
来指定。该程序会享有很少的CPU时间,对其他正在运行的进程影响也更小。当然,如果没有其他进程在运行,程序也不会被人为停住。
nice
会给优先级添加“niceness”:正值优先级(从1到19)逐渐降低优先级,而负值(从-1到-20)增加优先级-但是仅有超级用户可以使用负值优先级。除非特别指明(参看 nice(1) 手册), nice
将当前优先级加10。
若发现已运行的工作应以 nice
启动,修正它并不算太迟;renice
命令可改变运行中进程的优先序,增加或减少均可 (但减少 “niceness” 是超级用户的权限)。
安装 anacron 软件包会禁用 cron
在 /etc/cron.hourly/
, /etc/cron.daily/
, /etc/cron.weekly/
, 和 /etc/cron.monthly/
目录中的脚本。避免 anacron
和 cron
重复运行这些脚本。 cron
命令仍然可用并处理其他计划任务(特别是用户安排的计划任务)。