6

この種の問題については非常に新しいのですが、ポート 80 でサーバーを起動しようとしています (この特定のポートを使用することが重要です)。

失敗しますが、他のポートでは動作します (root の場合は < 1024 でも、ポート 80 では失敗します)。

ポート 80 で何かが実行されている可能性があります。リッスン ポートを変更するためにそれを特定したいと考えています。

このコマンドが特定のポートの状態を確認するのに役立つことがnetstat -ano|grep 80|grep LISTENわかりましたが、結果をよく理解しているかどうかはわかりません。

ここに私が得るものがあります:

tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::80                   :::*                    LISTEN      off (0.00/0/0)
unix  2      [ ACC ]     STREAM     LISTENING     8805     /tmp/mongodb-27017.sock
unix  2      [ ACC ]     STREAM     LISTENING     13112    /home/me/.pulse/04d802bb34ddb9da49b1f9060000000b-runtime/native

2行目で、ポート80がリッスンしていないようだと読みましたが、それ以上はわかりません。

アップデート:

sudo lsof -i :80

COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1107     root    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1131 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1132 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1133 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1134 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
apache2   1136 www-data    4u  IPv6   7630      0t0  TCP *:http (LISTEN)
ubuntu-ge 2095     me    7u  IPv4  82145      0t0  TCP me-Ubuntu.local:43345->mulberry.canonical.com:http (CLOSE_WAIT)

ありがとう(私はubuntuを使用しています)!

4

2 に答える 2

11

これが Linux の場合 (MacOS ではなく、おそらく他の UNIX も同様)、次のコマンドを実行してみてください。

sudo netstat -lnp

次のような出力が得られます。

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
...
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     26156/apache2       
...

興味深い部分をリストします。

  • ローカル アドレス: 0.0.0.0:80 - 問題のアドレスは、すべてのインターフェイスのポート 80 です。
  • 状態: LISTEN - リッスン中
  • PID/プログラム名 - 26156/apache2 - ポートをリッスンしているプロセスの ID と名前。

基本的に、上記のプログラムが実行されていないことを確認する必要があります (たとえば、私の場合は、apache2 デーモンをシャットダウンし、次回の起動時に OS が自動的に起動しないように構成する必要があります)。

一方、これをすぐに修正したい場合は、プロセスを強制終了できます。

kill -9 <pid>

私の例では:

kill -9 26156

もちろん、次回再起動するか、誰かがそのサービスを開始すると、問題が再発します。

于 2013-01-05T03:59:11.610 に答える
3

以下を使用lsofして調べることができます。

sudo lsof -i :80

持っていない場合はlsof、でインストールします

sudo apt-get install lsof

lsof誰がファイルとソケットを開いたままにしているかを知るためのスイスアーミーナイフツールのようなものです。

于 2013-01-05T03:52:39.807 に答える