33

bash スクリプトから tcp サーバーを起動するとき、現在のインスタンスがリッスンを開始する直前に、前のインスタンス (同じポートをリッスンしている可能性があります) を強制終了する必要があります。

のようなものを使用できますpkill <previous_pid>。私がそれを正しく理解していれば、これSIGTERMはターゲットpidに送信するだけです。戻ったときpkillに、ターゲットプロセスがまだ生きている可能性があります。pkill終了するまで待つ方法はありますか?

4

2 に答える 2

34

いいえ。できることは、でループを書くことですkill -0 $PID。この呼び出しが失敗した場合 ( $? -ne 0)、プロセスは終了しています。

while kill -0 $PID; do 
    sleep 1
done

(コードについては qbolec に敬意を表します)

関連している:

于 2015-03-26T14:56:32.953 に答える