スクリプトに関連するすべてのプロセスを終了

スクリプトに関連するすべてのプロセスを終了

複数のプログラムを順番に呼び出すスクリプトがあります。このスクリプトを完全に終了するにはどうすればよいですか?Ctrl+をクリックしCて一部のプロセスをキャンセルできますが、プロセス全体を終了するには数回(数千回または数万回)をクリックする必要があることを知っています。時計やコマンドだけでスクリプトを終了するには? (または複数のコマンド?)

答え1

問題は、シグナルがCtrl + Cスクリプトに到達せずに開始されたプロセスにのみ到達することです。をC押し続けながら指を離すことができますCtrl + C。結局、シグナルはシェルに到達し、新しいプログラムは起動しません。

またはをクリックしCtrl + Zて入力することもできますkill %1

これにより、スクリプト全体が一時停止し、すべてが終了します。

答え2

 1. Get the script name (say abc.sh)
 2. ps -ef | grep "abc.sh" | awk '{print "kill "$2}' > file.sh
 3. /bin/bash file.sh

killに-9オプションを使用できます。 abc.sh スクリプトに親プロセスがある場合、親プロセスも終了します。したがって、賢明に使用することをお勧めします。ほとんどの場合、上記のステップ3は正常に機能します。

関連情報