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つのプロセスが開始されるため、これは重要です。1つはスクリプト自体、2つはinotifyプロセスです。
改善するには、を使用し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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加