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, но это не помогло

Как я могу выяснить, что использует порт?

Goot
источник

Ответы:

27

Несмотря на то, что люди привыкли к netstatтаким операциям, приятно знать, что в Linux есть еще один замечательный (и действительно превосходный) сетевой инструмент - ss. Например, чтобы узнать, какой процесс открыл порт 80, вы запускаете его так:

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

поэтому нет необходимости прокладывать трубы через внешние фильтры. Конечно, у него гораздо больше полезных ручек, так что ознакомьтесь с ним.

Для полноты и с недавнего времени я man fuserтакже могу упомянуть:

  • sudo fuser 80/tcp- это также избавляет вас от необходимости возиться с cut/ grep/ awk... имейте в виду, что это обозначение является сокращенным, в случае двусмысленности, вы должны использовать одно из пространств имен, разрешенных с -n …, какsudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- указал @ wallenborn . Между тем -nстрого не требуется, настоятельно рекомендуется, так как в противном случае используется разрешение DNS, которое обычно сильно замедляет вывод.

poige
источник
@ Goot, если вы имеете в виду двоичный файл, да, по крайней мере, ls -l /proc/PID/exeбудет делать. И ты имеешь в виду его текущую работу, реж …/cwd.
Пой
5

Address already in use означает, что другой процесс уже прослушивает порт 80. Только один процесс может прослушивать данный порт одновременно.

Чтобы найти процесс, запустите от имени пользователя root:

netstat -tnlp | grep -w 80

Оскорбительный процесс будет указан.

Майкл Хэмптон
источник
спасибо, я понял, что есть еще один пример запуска lighttpd. Я приму ваш ответ, когда это возможно.
Goot
4

Другой вариант с меньшим количеством нажатий клавиш - это lsof:

lsof -i :80
Валленборн
источник
Нет. Это показывают не только процессы прослушивания.
Poige
1
Правильное использование немного дольше:lsof -n -sTCP:LISTEN -i:22
poige
1
Правильное использование немного более длиннее: sudo lsof -n -sTCP:LISTEN -i:80. И лучше использовать sudoявно, чтобы подчеркнуть, что если пользователь не имеет превосходных разрешений, он не сможет получить правильные результаты.
Poige
0

Старый поток, но кто знает, у кого-то есть та же проблема, что и у меня. В Apache2 у меня было включено несколько сайтов. В одной из конфигураций сайта (/ etc / apache2 / sites-available) первая строка была

listen 80

Это вызвало конфликт с самим Apache! Потому что он уже слушал порт 80 как глобальный конфиг. Просто удалите «listen 80» из yoursite.conf, если Apache имеет порт 80 в качестве порта по умолчанию.

PianoMan
источник