bash スクリプトから tcp サーバーを起動するとき、現在のインスタンスがリッスンを開始する直前に、前のインスタンス (同じポートをリッスンしている可能性があります) を強制終了する必要があります。
のようなものを使用できますpkill <previous_pid>
。私がそれを正しく理解していれば、これSIGTERM
はターゲットpidに送信するだけです。戻ったときpkill
に、ターゲットプロセスがまだ生きている可能性があります。pkill
終了するまで待つ方法はありますか?
bash スクリプトから tcp サーバーを起動するとき、現在のインスタンスがリッスンを開始する直前に、前のインスタンス (同じポートをリッスンしている可能性があります) を強制終了する必要があります。
のようなものを使用できますpkill <previous_pid>
。私がそれを正しく理解していれば、これSIGTERM
はターゲットpidに送信するだけです。戻ったときpkill
に、ターゲットプロセスがまだ生きている可能性があります。pkill
終了するまで待つ方法はありますか?
いいえ。できることは、でループを書くことですkill -0 $PID
。この呼び出しが失敗した場合 ( $? -ne 0
)、プロセスは終了しています。
while kill -0 $PID; do
sleep 1
done
(コードについては qbolec に敬意を表します)
関連している: