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 に敬意を表します)
関連している: