atd,batch // ロード制限要素の設定

atd,batch // ロード制限要素の設定

私は非対話型タスク実行を使用しておりbatch、8つのコアをすべて使用するように負荷制限要素を増やしたいと思います。私はUbuntu 16.04 LTSを使用しています。

私が理解したのは、作業を完了するbatchために使用されます。atd負荷率がしきい値と呼ばれるしきい値を下回ると、ジョブが開始されます。負荷制限係数。 optionsをman使用してatdこの要素を変更できるとします-l

私の質問:このオプションをどのように使用しますかatd -l XX?たとえば、atd -l 7.2beforeと入力するとbatch何も変更されないようです。

これまで私が見つけたもの:

  • この質問にはマルチスレッドでbashスクリプトを実行する方法、ある貢献者は、「サービス開始スクリプト」でこれを行うことを提案しました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この行に置き換えます。」しかし、そのような行はありません。-ldaemon /usr/sbin/atd -l 1.6/etc/init.d/atd

ここで紹介すればなりそうですが/etc/init.d/atd、どこか分かりません。私はそのようなファイルを変更したことがありません。

batchそれでは、コマンドで使用される負荷制限要素をどのように変更しますか?

答え1

解決策が見つかりました。

  • ファイルを生成します。/etc/init/atd.override
  • 行を追加exec atd -l 7.2
  • それからsudo service atd restart

これは「Upstart initデーモン」の仕組みに関連しています。そこの説明:http://linux.die.net/man/5/init ファイルが/etc/init/atd.overrideすでに存在し、で始まる行が含まれている場合は、その行をexec編集します。

答え2

/lib/systemd/system/atd.serviceUbuntu 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 atdservice atd status)が表示されます。

警告:ディスクのatd.serviceが変更されました。デバイスをリロードするには、「systemctl daemon-reload」を実行してください。

このコマンドを実行すると警告は表示されませんが、実際に変更を適用するにはsystemctl restart atdservice atd restart)

答え3

これは以下に基づいています。ウェスリーBの回答。使用する場合に適用されますsystemctl。サービス構成を直接更新する代わりに、書く定義できます。オペレーティングシステムはいつでもサービス構成を置き換えることができるので、これを行うのが最善です。この回答はUbuntu 21.10でテストされました。

  1. 実行しsudo systemctl edit atdて挿入します。
[Service]
ExecStart=
ExecStart=/usr/sbin/atd -f -l 3.0 -b 5

ExecStart=上記の古い値を無効にするには、値のない行が必要です。次の行では、必要に応じて-lsum値を設定します。-b男性ページ。

これで上記の行が作成されます。/etc/systemd/system/atd.service.d/override.confこのファイルを追加したときに追加されていない場合は、それを実行する必要がsystemctl editあります。sudo systemctl daemon-reload

  1. ランニングsudo systemctl restart atd

  2. 確認ステータス:

systemctl status atd
ps aux | grep [a]td

これには、カスタムパラメータとともにサービスとプロセスのステータスを表示する必要があります。

答え4

私の近くにはUbuntu 16.04 LTSはありませんが、Debianベースのシステムでは /etc/init.d/atd通常、次のように表示されます。

case "$1" in
  start)
        log_daemon_msg "Starting deferred execution scheduler" "atd"
        start_daemon -p $PIDFILE $DAEMON -l 7
        log_end_msg $?

-l 7セクションを追加した場所を確認してください。その後、再起動して承認されたことを/etc/init.d/atd restart確認ps auxwww|grep atdする必要があります。

時には、/etc/default/atdより簡単なアプローチを選択することに注意してください(そして、次のアップグレード時に変更が自動的に消去されないので、より良い)。

関連情報