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/目录中的脚本。避免 anacroncron重复运行这些脚本。 cron 命令仍然可用并处理其他计划任务(特别是用户安排的计划任务)。