Debian - Le port 80 est bloqué, mais je ne sais pas par quoi

8

Je ne peux pas faire en sorte que lighttpd écoute le port 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!

En fait, j'ai également installé apache2 sur mon serveur (en écoutant le port 80) mais il n'est pas actif.

J'ai utilisé netstat / netstat -npl mais cela n'a pas été utile

Comment savoir ce qui utilise le port?

Goot
la source

Réponses:

27

Dans depsite de personnes habituées à netstatce type d'opérations, il est bon de savoir que Linux a un autre excellent outil de réseautage (et, en fait, supérieur) - ss. Par exemple, pour savoir quel processus a ouvert le port 80, exécutez-le de la manière suivante:

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

il n'est donc pas nécessaire de passer à travers des filtres externes. Certes, il a beaucoup plus de boutons utiles, alors familiarisez-vous avec lui.

Par souci d'exhaustivité et depuis récemment que je suis tombé sur man fuser, je peux également mentionner:

  • sudo fuser 80/tcp- celui-ci vous évite également de bricoler à cut/ grep/ awk... gardez à l'esprit que cette notation est un raccourci, en cas d'ambiguïté, vous devez utiliser l'un des espaces de noms autorisés avec -n …, commesudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- a été souligné par @ wallenborn . En attendant, ce -nn'est pas strictement requis, il est fortement conseillé car sinon il utilise la résolution DNS qui ralentit généralement terriblement la sortie.

poige
la source
@Goot, si vous voulez dire binaire, oui, au moins ls -l /proc/PID/exeferait l'affaire. Et vous voulez dire son répertoire de travail actuel, voyez …/cwd.
poige
5

Address already in use signifie qu'un autre processus écoute déjà sur le port 80. Un seul processus peut écouter sur un port donné à la fois.

Pour trouver le processus, exécutez en tant que root:

netstat -tnlp | grep -w 80

Le processus incriminé sera répertorié.

Michael Hampton
la source
merci, j'ai compris qu'il y avait une autre instance de lighttpd en cours d'exécution. J'accepterai votre réponse lorsque cela sera possible.
Goot
4

Lsof est une autre option avec moins de frappes:

lsof -i :80
Wallenborn
la source
Nan. Il montre non seulement les processus d'écoute.
poige
1
L'utilisation correcte est un peu plus longue:lsof -n -sTCP:LISTEN -i:22
poige
1
L' utilisation correcte est un peu plus long: sudo lsof -n -sTCP:LISTEN -i:80. Et il est préférable d'utiliser sudoexplicitement pour souligner que, à moins que l'utilisateur n'ait des autorisations supérieures, il ne puisse pas obtenir de résultats corrects.
poige
0

Vieux fil mais qui sait, quelqu'un a le même problème que moi. Dans Apache2, j'avais plus d'un site activé. Dans l'une des configurations de site (/ etc / apache2 / sites-available), la première ligne était

listen 80

Cela a provoqué un conflit avec Apache lui-même! Parce qu'il écoutait déjà sur le port 80 en tant que configuration globale. Supprimez simplement le "listen 80" de yoursite.conf si Apache a le port 80 comme port par défaut.

Pianoman
la source