At
atd, batch // 設置負載限制因子
我正在使用 啟動非互動式作業
batch
,並且我想增加負載限制因子以使用我的所有 8 個核心。我在 Ubuntu 16.04 LTS 上。據我了解,
batch
用於atd
完成工作。當負載因子低於門檻值(稱為負載限制因子)時,作業開始。據說我們可以使用該選項更改此man
因素。atd``-l
我的問題:我該如何使用這個
atd -l XX
選項?例如,當我輸入atd -l 7.2
beforebatch
時,它似乎並沒有改變任何東西。到目前為止我發現了什麼:
- 在這個問題How to run bash script via multithreading中,一位貢獻者建議在“
atd
服務啟動腳本”中執行此操作。我猜它指的是/etc/init.d/atd
,但我不知道在那裡改變什麼,參見下一個要點。- 我找到了一些頁面,例如這個http://searchitchannel.techtarget.com/feature/Understanding-run-level-scripts-in-Fedora-11-and-RHEL,他們建議:“修改以下行(在
/etc/init.d/atd
腳本的開始部分):daemon /usr/sbin/atd
. 用這一行替換它,使用-l
參數指定新的最小系統負載值:daemon /usr/sbin/atd -l 1.6
“。但是,在 中沒有這樣的行/etc/init.d/atd
。好像可以在中引入
/etc/init.d/atd
,但是不知道在哪裡。我從未更改過此類文件。那麼,如何更改
batch
命令使用的負載限制因子?
找到了解決方案:
- 創建一個文件:
/etc/init/atd.override
- 添加一行
exec atd -l 7.2
- 然後
sudo service atd restart
它與“Upstart init daemon”的工作方式有關。那裡的解釋:http: //linux.die.net/man/5/init 如果文件
/etc/init/atd.override
已經存在並以 開頭的行exec
,請編輯此行。
/lib/systemd/system/atd.service
在 Ubuntu 16.04 / systemd 上編輯。附加
-l «load avg»
到後ExecStart
:$ cat /lib/systemd/system/atd.service [Unit] Description=Deferred execution scheduler Documentation=man:atd(8) [Service] ExecStart=/usr/sbin/atd -f -l 7.2 IgnoreSIGPIPE=false [Install] WantedBy=multi-user.targe
執行時您會看到一條消息
systemctl status atd
或 (service atd status
):警告:磁碟上的 atd.service 已更改。執行“systemctl daemon-reload”重新載入單元。
執行該命令會消除警告,但要實際獲取更改,服務需要通過
systemctl restart atd
(service atd restart)
.