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