Debian - La porta 80 è bloccata, ma non so per cosa


8

Non riesco a far ascoltare lighttpd alla porta 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!

In realtà ho anche apache2 installato sul mio server (ascoltando la porta 80) ma non è attivo.

Ho usato netstat / netstat -npl ma non è stato utile

Come posso capire cosa sta usando la porta?

Risposte:


27

A dispetto del fatto che le persone si sono abituate netstatper questo tipo di operazioni, è bene sapere che Linux ha un altro ottimo strumento di rete (e, in realtà, superiore) - ss. Ad esempio, per scoprire quale processo ha aperto la porta 80, è necessario eseguirlo in questo modo:

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

quindi non è necessario passare attraverso filtri esterni. Sicuramente ha molte più utili manopole, quindi familiarizza con esso.

Per completezza e da quando mi sono imbattuto di recente man fuser, posso anche menzionare:

  • sudo fuser 80/tcp- questo ti evita anche di armeggiare a cut/ grep/ awk... tieni presente che questa notazione è una scorciatoia, nel caso in cui ci sia un'ambiguità, dovresti usare uno degli spazi dei nomi consentito -n …, comesudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- è stato sottolineato da @ wallenborn . Nel frattempo -nnon è strettamente necessario, è fortemente consigliato poiché altrimenti utilizza la risoluzione DNS che di solito rallenta terribilmente l'output.


@Goot, se vuoi dire binario, sì, almeno ls -l /proc/PID/exelo farebbe. E intendi dire il suo attuale lavoro dir, vedi …/cwd.
poige

5

Address already in use significa che un altro processo è già in ascolto sulla porta 80. Solo un processo può ascoltare su una determinata porta alla volta.

Per trovare il processo, esegui come root:

netstat -tnlp | grep -w 80

Il processo offensivo verrà elencato.


grazie, ho capito che c'è un'altra istanza di lighttpd in esecuzione. Accetterò la tua risposta quando sarà possibile.
Goot

4

Un'altra opzione con meno tasti è lsof:

lsof -i :80

No. Mostra non solo processi di ascolto.
poige

1
L'uso corretto è un po 'più lungo:lsof -n -sTCP:LISTEN -i:22
poige

1
Uso corretto è un po 'più lungo: sudo lsof -n -sTCP:LISTEN -i:80. Ed è meglio usare sudoesplicitamente per sottolineare che, a meno che l'utente non disponga di autorizzazioni superiori, potrebbe non essere in grado di ottenere risultati corretti.
poige

0

Vecchio thread ma chissà, qualcuno ha lo stesso problema che ho avuto. In Apache2 avevo abilitato più di un sito. In una delle configurazioni del sito (/ etc / apache2 / sites-available) la prima riga era

listen 80

Ciò ha causato un conflitto con Apache stesso! Perché stava già ascoltando sulla porta 80 come configurazione globale. Basta rimuovere 'hear 80' da yoursite.conf se Apache ha la porta 80 come porta predefinita.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.