我想知道批队列(即batch
)at -q b
。
atd
我之所以问这个问题,是因为连续执行作业之间似乎必须等待 1 分钟(默认情况下)。(例如,如果我执行batch <<<true
五次,则队列至少需要 4 分钟才能清除。)
在生产脚本中使用它似乎不可靠,因为如果其他用户或脚本在for i in {1..2880}; do batch <<<true; done
我之前做了类似的事情,我的脚本的执行将会延迟/中断 2 天。
答案1
当典型的 *nix 机器只有很少的处理器,但用户之间共享较多时,此命令更有用。正如man batch
所述,
当系统负载水平允许时,batch 会执行命令;换句话说,当平均负载降至 1.5 以下或低于 atd 调用中指定的值时。
因此,它旨在用于资源拥挤的环境。如果在负载低于阈值时启动作业,则系统有必要观察批处理队列中的作业完成后其他用户投入了多少负载。也许负载会再次超过阈值,因此需要再次暂停批处理队列中的作业的执行。因此中断。
您的反例是有效的,但不切实际。像您描述的那样破坏系统的用户是一个“社会问题”,而不是技术问题。如果您想到一个 HPC 环境,其中竞争用户提交大量作业:这不是目的,batch
而是工具的领域,例如斯拉普。