定期的に&& shutdown -h now
長時間実行プロセスに追加することを忘れてしまいます。shutdown -h now
コマンドを追加する方法はありますか?後最初のコマンドが呼び出されましたか? 進行中のプロセスを中断することを意図したものではありません。 PID を監視することは可能でしょうか?
答え1
psを繰り返し実行してすべてのプロセスをリストし、出力をgrepする必要はありません。プロセスをCtrl-Zでバックグラウンドにしてから、
bg %1 ; wait %1 ; shutdown -h now
他のバックグラウンドジョブが実行中の場合は、Ctrl + Z を押すと [1] ではなく別のジョブスペックが提供されます。その場合は、代わりにそれを使用してください。
答え2
私はいつもこれをやっています。
- プロセスを開始します。
- 自分が命令を実行するのを忘れていたことに気が付きました
&&
。 - Ctrl+ を押すZとプロセスが一時停止され、シェルに戻ります。
- に向かって走る
fg && shutdown -h now
:- 一時停止したプロセスをフォアグラウンドで再開します。
- その後、完了すると、実行したい内容が実行されます。
あるいは、他の回答で提案されているように、次のように投票することもできます。
while ps -p $PID ; do sleep 5 ; done ; shutdown -h now
答え3
次のようにすると、プロセスが 5 秒ごとに実行されているかどうかを確認し、適切なアクションを実行できます。
while true; do
if ps -ef | grep -q '[l]ong-running-process'; then
sleep 5
else
sudo poweroff
fi
done
式内の角括弧に注意してください。これは、プロセスがリスト内に含まれていても一致しないようgrep
にするためです。任意の 1 文字を角括弧で囲むだけで十分です。grep
ps
答え4
両方のプロセスを実行するシェル スクリプトを作成します。
MyShellScript.txt:
#!/bin/sh
MyProcessIdLikeToStart -o options && shutdown -h now
特定のプロセスを開始するディレクトリにこれを保存した後、次の操作を実行します。
chmod +x MyShellScript.txt
その後、コマンドを実行したいときに入力するだけで./MyShellScript.txt
、両方が自動的に実行されます。