Debian-ポート80はブロックされていますが、何であるかわかりません


8

lighttpdにポート80をリッスンさせることができません。

~# /etc/init.d/lighttpd start
Starting web server: lighttpd2013-03-16 23:15:02: (network.c.379) can't bind to port:  80 Address already in use
 failed!

実際、サーバーにもapache2がインストールされています(ポート80をリッスンしています)が、アクティブではありません。

netstat / netstat -nplを使用しましたが、役に立ちませんでした

どのようにしてポートを使用しているのかを知ることができますか?

回答:


27

そのnetstatような操作に慣れている人々の遠慮のもと、Linuxにはもう1つの優れた(そして実際には優れた)ネットワークツールがあることを知っておくのは良いことですss。たとえば、どのプロセスがポート80開いたかを確認するには、次のように実行します。

sudo ss -pt state listening 'sport = :80'

したがって、外部フィルターを介してパイプする必要はありません。確かにもっと便利なノブがたくさんあるので、慣れてください。

完全を期すために、そして私が最近遭遇して以来man fuser、私はまた言及することができます:

  • sudo fuser 80/tcp—これはcut/ grep/ awk…をいじくり回さないようにもします。この表記はショートカットであることを覚えておいてください。あいまいな場合は-n …、次のようにで許可されている名前空間の1つを使用する必要があります。sudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80@wallenbornによって指摘さました。一方-n、厳密には必須ではありませんが、そうでない場合は通常DNS解決を使用して出力を大幅に遅くするため、強くお勧めします。


@Goot、あなたがバイナリを意味するなら、うん、少なくともls -l /proc/PID/exeそうするでしょう。そして、あなたはその現在の作業ディレクトリを意味します、を見てください…/cwd
poige 2013年

5

Address already in use 別のプロセスがすでにポート80でリッスンしていることを意味します。一度に1つのプロセスだけが特定のポートでリッスンできます。

プロセスを見つけるには、rootとして実行します。

netstat -tnlp | grep -w 80

問題のあるプロセスがリストされます。


おかげで、lighttpdの別のインスタンスが実行されていることがわかりました。可能な場合はお答えいたします。
2013年

4

キーストロークが少ない別のオプションはlsofです。

lsof -i :80

いいえ。リスニングプロセスだけではありません。
poige 2013年

1
正しい使用は、もう少し長いです:lsof -n -sTCP:LISTEN -i:22
poige

1
正しい使い方はもう少し長くなります:sudo lsof -n -sTCP:LISTEN -i:80。また、sudo明示的に使用して、ユーザーに優れた権限がないと正しい結果が得られない可能性があることを強調することをお勧めします。
poige 2013年

0

古いスレッドですが、誰かが知っているように、私と同じ問題があります。Apache2では、複数のサイトを有効にしていました。サイト構成の1つ(/ etc / apache2 / sites-available)では、最初の行は

listen 80

これにより、Apache自体との競合が発生しました。グローバル構成としてすでにポート80でリッスンしているためです。Apacheがデフォルトのポートとしてポート80を持っている場合は、yoursite.confから「listen 80」を削除してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.