ポートを使用して「見えない」プロセスを終了する方法

ポートを使用して「見えない」プロセスを終了する方法

LinuxシステムでGlassfishサーバーを起動しようとしています。

./startserv

これにより、次のメッセージが返されます。

There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server

次のコマンドを使用して、これがどのプロセスであるかを確認してください。

lsof -t -i tcp:4848

Glassfishを実行している他のコンピュータでは、このコマンドはGlassfishで使用されているプロセスIDを返します。ただし、問題のあるコンピュータでは何も返されません。

ヘルプがない場合は、ポート4848を使用してプロセスを識別して終了するための最良の方法は何ですかlsof -t -i tcp:4848

ありがとう

ベストアンサー1

ここではおそらく2つのことが起こっているでしょう。 1つは、ポートで何かを受信して​​いますが、lsofと友達がそれを逃したか、起動スクリプト/エラーメッセージが混乱していることです。

ネットワーク名前空間はポートを隠すことができますが、procファイルシステムに直接問い合わせるには、次のことを試してください。

grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6

12f0は16進数で4848であり、このファイルはカーネルがTCPv4およびTCPv6ソケットに関する情報を格納する場所です。

一致する行を取得すると、実際にポートでリッスンしているものがあり、ツールはsusです。ヒットなしは、名前空間を実行しているか、起動スクリプトが実行中であることを意味します。

netcatを使用してソケットが実際に使用されていることを確認することもできます。

nc -l 4848

静かであれば大丈夫です。ソケットが使用中であると文句を言うと、実際に使用されているものなので、ツールと名前空間が正しいことを確認する必要があります。

おすすめ記事