介紹如何在 Linux 系統上使用 batch
將多個程式納入排程,靠 atd
依據系統負載分散執行。
如果要在 Linux 系統上執行多個耗費系統資源的程式,可以使用 batch
指令將所有工作排程納入系統,由 atd
這個系統服務自動調配計算資源來執行多個工作,它會判斷系統的負載量,在系統負載較輕(預設是 load 值小於 1.5)的時候依序執行排定的工作。
若要將工作送進 atd
的排程中,只要將要執行的指令送給 batch
指令即可。例如將三個 Python 指令稿送進 atd
排程:
# 排程執行指定程式 echo 'python3 job1.py' | batch echo 'python3 job2.py' | batch echo 'python3 job3.py' | batch
warning: commands will be executed using /bin/sh job 1 at Fri Nov 27 15:38:00 2020 warning: commands will be executed using /bin/sh job 2 at Fri Nov 27 15:38:00 2020 warning: commands will be executed using /bin/sh job 3 at Fri Nov 27 15:38:00 2020
若要查詢已經納入排程但還在等待、尚未執行的項目,可以使用 atq
指令,搭配 -q b
查看 batch
專用的佇列(queue):
# 查詢已排程但尚未執行的項目 atq -q b
2 Fri Nov 27 15:38:00 2020 b ubuntu 3 Fri Nov 27 15:38:00 2020 b ubuntu
若要刪除已排定但尚未執行的程式,可以使用 atrm
指令搭配項目的編號來刪除:
# 移除編號 3 的排程項目 atrm 3