以下のようにポート6060でlsofを実行すると、
# lsof -i TCP:6060 | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
app_lot 3495 root 12u IPv6 9238779 1t0 TCP *:krb0934 (LISTEN)
app_lot 3495 root 13u IPv6 9208460 1t0 TCP linux_server45:krb0934->43.55.3.22:5992 (CLOSE_WAIT)
app_lot 3495 root 21u IPv6 9402392 1t0 TCP linux_server45:krb0934->34.22.50.28:6005 (CLOSE_WAIT)
app_lot 3495 root 28u IPv6 9208462 0t0 TCP linux_server45:krb0934->54.33.6.161:23096 (CLOSE_WAIT)
待っている人がたくさん見えましたが、
私たちはpidを殺したくありません - 3495
強制終了(CLOSE_WAIT)は可能ですか?
アプリケーションを再起動する必要はありません - app_lot
答え1
CLOSE_WAIT
この状態(または他の状態)のソケットは外部で閉じることはできません。誤動作するプログラムが接続CLOSE_WAIT
を蓄積している場合は、それを解放する唯一の方法はそのプログラムを終了することです。
これはアプリケーションのバグであり、最善の解決策はこれを修正することです。 (これは可能であるか現実的ではありません)、またはデバッガを使用して接続し、デバッガ接続を閉じることもできます。