現在実行中のコマンドが完了した後に実行中のbashスクリプトを停止する方法は?

現在実行中のコマンドが完了した後に実行中のbashスクリプトを停止する方法は?

シェルスクリプトがあります:

#!/bin/bash
python3 do_something_1.py
python3 do_something_2.py
python3 do_something_3.py
python3 do_something_4.py
python3 do_something_5.py

今走っているならpython3 do_something_3.py

bashプロセスがpython3 do_something_3.py終了した後に後続のコマンドを実行しないようにするにはどうすればよいですか(サブプロセスを終了しないでください)python3 do_something_4.pypython3 do_something_5.py

ベストアンサー1

whileループを使用して、do_something_3.pyまだ実行されているかどうか(例:使用pgrep)を確認できますsleep

ループが終わったらスクリプトを終了します。

while pgrep -f do_something_3.py >/dev/null ; then
    sleep 0.1
done && pkill -9 myscript
  • 正確なpkillコマンドは、スクリプトに名前を付けて呼び出す方法によって異なり、pgrep myscriptPIDを使用してテストまたは検索できますkill -9 PID
  • do_something_4.pyスクリプトの開始前に停止する正確な時間が見つからないため、これは理想的ではありません。

おすすめ記事