プロセスが割り当てられていないリッスンモードのTCPポート)の状況になりました。
サーバーを再起動せずにこのポートを閉じる方法はありますか?
ポートステータスの確認:
me> netstat -tan | grep 8888
tcp 0 0 :::8888 :::* LISTEN
責任のあるプロセスを探しています:
me> lsof -i -P | grep 8888
上記のコマンドは何も返しません
netstat -ltpn | grep 8888
をお試しください
This netstatがプロセス名のダッシュである場合、ページではSudo lsof -i tcp:8888
を実行することをお勧めします。
私の場合、それは ゾンビ プロセスによって所有されることになりました、奇妙な、私は知っています。
$ Sudo lsof -i tcp:8888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
my-proc-name 38116 root 16u IPv6 326070554 0t0 TCP *:8888 (LISTEN)
次に、38116(この場合)の「ps」出力を調べて、無効なプロセスを確認できます。
ps -ef grep 38116
root 38116 1 0 Apr24 ? 00:06:58 [my-proc-name] <defunct>
(私の推測では、それはまだクリーンアップされていないある種のゾンビプロセスですか?).
別の オプション :
Sudo ss -apn | grep 8888
あなたは不可能なシナリオを説明しています。
以前のポスターに欠けているのは、自分が所有していないプロセスにポートをマップしようとしているという事実だと思います。したがって、これらのツールには、そのポート-> PIDマッピングを容易にする/proc
エントリを表示する権限がないため、lsof
は何も返しません。 netstat
コマンドにも-pフラグがありません。これらのコマンドをroot
として実行すると、状況がはるかに明確になります。
netstatは/ proc/net/[tcp | udp | tcp6 | udp6]を解析し、次に/ proc/$ pid/-areaをスキャンして一致するプロセスを見つけますが、fuserとlsofは/ proc/$全体を「のみ」移動します。 pid/-areaは、どのプロセスがどのソケットに対して認識されているかを検索します。最終的に、これら2つの異なるアプローチは異なる結果に終わる可能性があります。
ソケットにプロセスが割り当てられていない場合は、次の2つのオプションがあります。
たとえば、NFSを介して共有をマウントすると、同様の「リスニング」ポートが発生します。したがって、これらのポートはNFS共有をマウントすることで再表示され、NFS共有をアンマウントすると消えます。
を実行します
fuser 8888/tcp
ポートで実行されているpidが一覧表示されます。