我想知道是否有一个实际目的的批处理队列(即batch , at -qb )。
我这样问,因为在连续的工作执行之间似乎有一个强制性的等待时间( atd的默认值)。 (例如,如果我执行batch <<<true五次,至less需要4分钟才能清除队列。)
在生产脚本中使用它似乎是不可靠的,因为如果其他用户或脚本for i in {1..2880}; do batch <<<true; done做了同义词for i in {1..2880}; do batch <<<true; done for i in {1..2880}; do batch <<<true; done 在我之前for i in {1..2880}; do batch <<<true; done ,我的脚本的执行将被延迟/饿死2天。
当典型的* nix机器具有非常less的处理器,但在用户之间大量共享时,这个命令更有用。 正如man batch说的,
当系统负载水平允许时批处理执行命令; 换句话说,当平均载荷下降到低于1.5,或在调用atd指定的值。
所以打算在资源拥挤的环境中使用。 如果在负载下降到阈值以下的时候开始作业,那么系统在批处理队列完成作业之后要观察其他用户投入了多less负载。 也许负载将再次高于阈值,所以需要重新暂停批处理队列中的作业执行。 因此rest。
你的反例是有效的,但是不切实际。 像你所描述的破坏系统的用户是一个“社会问题”,而不是技术问题。 如果您想到竞争用户提交大量工作的高性能计算环境:这不是batch ,而是像SLURM这样的工具。