スクリプトの他のインスタンスがすでに実行されている場合は、スクリプトを終了する方法についていくつかの提案がありました。私の問題はその逆です。同じスクリプトの他のすべてのインスタンス(存在する場合)をすべて終了し、スクリプトを実行し続ける方法を探したいと思います。これを行う方法はありますか?
ベストアンサー1
PIDS=$(pidof -x nameofyourscript)
スクリプトを含むすべてのPID(存在する場合)を取得するには、次の操作を実行できます。それではあなたはできます。kill $PIDS
編集:上記は現在のスクリプトも終了するので、答えを修正して-o
次のオプションを追加してください。PIDS=$(pidof -x -o $$ nameofyourscript)
これ-o $$
により、現在のスクリプトのpidが省略されます。
より良いことは、スクリプト名をハードコードするのではなく、次から独自の名前を取得することです$0
。
kill $(pidof -x -o $$ $0)
そのため、スクリプトの先頭に配置して2>/dev/null
他のインスタンスを見つけることができず、問題が解決した場合に使用できます。