batch
を使用して非対話型ジョブを起動していますが、8つのコアすべてを使用するために、負荷制限係数を増やしたいと思います。私はUbuntu16.04LTSを使用しています。
私の理解では、batch
はatd
を使用してジョブを実行します。ジョブは、負荷率が負荷制限率と呼ばれるしきい値を下回ると開始されます。 man
のatd
には、-l
オプションを使用してこの係数を変更できると書かれています。
私の質問:このatd -l XX
オプションをどのように使用できますか?たとえば、batch
の前にatd -l 7.2
と入力しても、何も変更されていないようです。
私がこれまでに見つけたもの:
atd
サービス開始スクリプト」でこれを行うことを提案しています。 /etc/init.d/atd
を参照していると思いますが、そこで何を変更すればよいかわかりません。次の箇条書きを参照してください。/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
これは、「Upstartinitデーモン」がどのように機能するかと関係があります。そこに説明があります: http://linux.die.net/man/5/init ファイルが/etc/init/atd.override
はexec
で始まる行ですでに存在します、この行を編集してください。
Ubuntu 16.04/systemdで/lib/systemd/system/atd.service
を編集します。
-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がディスク上で変更されました。 'systemctldaemon-reload'を実行してユニットをリロードします。
そのコマンドを実行すると警告が削除されますが、実際に変更を取得するには、サービスを再起動する必要があります(service atd restart)
。
近くにUbuntu16.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
がある場合があることに注意してください。これは、より簡単な方法です(また、次のアップグレードで変更がサイレントに消去されないため、より適切です)