Debian - Port 80 ist blockiert, aber ich weiß nicht woran

8

Ich kann lighttpd nicht dazu bringen, Port 80 anzuhören.

~# /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!

Eigentlich habe ich auch Apache2 auf meinem Server installiert (lauscht auf Port 80), aber es ist nicht aktiv.

Ich habe netstat / netstat -npl verwendet, aber es war nicht hilfreich

Wie kann ich herausfinden, was den Port verwendet?

Goot
quelle

Antworten:

27

Angesichts der Tatsache, dass sich die Leute an netstatsolche Operationen gewöhnt haben , ist es gut zu wissen, dass Linux ein weiteres großartiges (und tatsächlich überlegenes) Netzwerk-Tool hat - ss. Um beispielsweise herauszufinden, welcher Prozess Port 80 geöffnet hat, führen Sie ihn folgendermaßen aus:

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

Es ist also nicht erforderlich, externe Filter durchzuleiten. Sicherlich hat es viel mehr nützliche Knöpfe, also machen Sie sich damit vertraut.

Der Vollständigkeit halber und seit kurzem bin ich auf Folgendes man fusergestoßen:

  • sudo fuser 80/tcp- Dieser erspart Ihnen auch das Basteln an cut/ grep/ awk… Beachten Sie, dass diese Notation eine Abkürzung ist. Falls es Unklarheiten gibt, sollten Sie einen der zulässigen Namespaces verwenden -n …, zsudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- wurde von @ wallenborn darauf hingewiesen . In der Zwischenzeit ist dies nicht unbedingt erforderlich. Es wird dringend empfohlen, da sonst eine DNS-Auflösung verwendet wird, die die Ausgabe normalerweise erheblich verlangsamt.-n

poige
quelle
@Goot, wenn du binär meinst, yep, ls -l /proc/PID/exewürde es zumindest tun. Und Sie meinen das aktuelle Arbeitsverzeichnis …/cwd.
Poige
5

Address already in use bedeutet, dass ein anderer Prozess bereits Port 80 überwacht. Es kann jeweils nur ein Prozess einen bestimmten Port überwachen.

Um den Prozess zu finden, führen Sie ihn als root aus:

netstat -tnlp | grep -w 80

Der beleidigende Prozess wird aufgelistet.

Michael Hampton
quelle
danke, ich habe herausgefunden, dass eine andere Instanz von lighttpd läuft. Ich werde Ihre Antwort akzeptieren, wenn es möglich ist.
Goot
4

Eine andere Option mit weniger Tastenanschlägen ist lsof:

lsof -i :80
wallenborn
quelle
Nee. Es zeigt nicht nur Hörprozesse.
Poige
1
Die korrekte Verwendung ist etwas länger:lsof -n -sTCP:LISTEN -i:22
Poige
1
Die korrekte Verwendung ist etwas länger : sudo lsof -n -sTCP:LISTEN -i:80. Und es ist besser, sudoexplizit zu verwenden, um zu betonen, dass der Benutzer möglicherweise keine korrekten Ergebnisse erzielen kann, wenn er nicht über überlegene Berechtigungen verfügt.
Poige
0

Alter Thread, aber wer weiß, jemand hat das gleiche Problem wie ich. In Apache2 hatte ich mehr als eine Site aktiviert. In einer der Site-Konfigurationen (/ etc / apache2 / sites-available) war die erste Zeile

listen 80

Dies verursachte einen Konflikt mit Apache selbst! Weil Port 80 bereits als globale Konfiguration abgehört wurde. Entfernen Sie einfach die 'listen 80' aus Ihrer Site.conf, wenn Apache Port 80 als Standardport hat.

Pianoman
quelle