Linux
at daemon:“批處理”隊列的意義何在?
我想知道批處理隊列是否有實際用途(即
batch
,at -q b
)。我問這個是因為
atd
在連續的作業執行之間似乎有一個強制性的 1 分鐘等待時間(預設情況下)。(例如,如果我執行batch <<<true
五次,則至少需要 4 分鐘才能清除隊列。)在生產腳本中使用似乎不可靠,因為如果其他使用者或腳本做了
for i in {1..2880}; do batch <<<true; done
與我之前相同的事情,我的腳本的執行將被延遲/餓死 2 天。
當典型的 *nix 機器只有很少的處理器但在使用者之間大量共享時,此命令更有用。正如所
man batch
指出的,在系統負載水平允許時批量執行命令;換句話說,當平均負載低於 1.5 或 atd 呼叫中指定的值時。
因此,它旨在用於資源擁擠的環境中。如果在負載降至門檻值以下時啟動作業,則係統有必要從批處理隊列中觀察其他使用者在完成作業後放入了多少負載。也許負載會再次超過門檻值,因此需要再次暫停批處理隊列中的作業執行。因此休息。
你的反例是有效的,但不切實際。像您描述的那樣破壞系統的使用者是“社會問題”,而不是技術問題。如果您想到競爭使用者送出大量作業的 HPC 環境:這不是
batch
目的,而是SLURM等工具的領域。