バックグラウンドで実行されているシェルスクリプトの終了

バックグラウンドで実行されているシェルスクリプトの終了

inotifyt-toolsのinotifywaitユーティリティを使用してディレクトリを監視するシェルスクリプトを作成しました。スクリプトがバックグラウンドで実行され続けたいのですが、必要に応じて停止することもできます。

引き続き実行するには、while true次のように使用しました。

while true;
do #a set of commands that use the inotifywait utility
end

ファイルとして保存して/bin実行可能にしました。バックグラウンドで実行するためにnohup <script-name> &端末を使用して閉じました。

このスクリプトを停止する方法がわかりません。私は答えを見たここそして非常に密接に関連する質問ここ

アップデート1: 以下の@InfectedRootの答えに基づいて、次の戦略を使用して問題を解決できました。初めて使用

ps -aux | grep script_name

sudo kill -9 <pid>プロセスを終了するために使用されます。その後、返されたIDを再pgrep inotifywait利用する必要がありました。sudo kill -9 <pid>

これはうまくいきますが、混乱したアプローチだと思い、より良い答えを探しています。

アップデート2: 回答には以下が含まれます2つのプロセスを終了。コマンドラインからスクリプトを実行すると2つのプロセスが開始されるため、これは重要です。スクリプト自体2、inotifyプロセス

ベストアンサー1

コマンドを改善、使用、killall結合するには、次のようにします。

ps -aux | grep script_name
killall script_name inotifywait

または、1行ですべて実行してください。

killall `ps -aux | grep script_name | grep -v grep | awk '{ print $1 }'` && killall inotifywait

おすすめ記事