Несмотря на то, что люди привыкли к 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, которое обычно сильно замедляет вывод.
ls -l /proc/PID/exe
будет делать. И ты имеешь в виду его текущую работу, реж…/cwd
.Address already in use
означает, что другой процесс уже прослушивает порт 80. Только один процесс может прослушивать данный порт одновременно.Чтобы найти процесс, запустите от имени пользователя root:
Оскорбительный процесс будет указан.
источник
Другой вариант с меньшим количеством нажатий клавиш - это lsof:
источник
lsof -n -sTCP:LISTEN -i:22
sudo lsof -n -sTCP:LISTEN -i:80
. И лучше использоватьsudo
явно, чтобы подчеркнуть, что если пользователь не имеет превосходных разрешений, он не сможет получить правильные результаты.Старый поток, но кто знает, у кого-то есть та же проблема, что и у меня. В Apache2 у меня было включено несколько сайтов. В одной из конфигураций сайта (/ etc / apache2 / sites-available) первая строка была
Это вызвало конфликт с самим Apache! Потому что он уже слушал порт 80 как глобальный конфиг. Просто удалите «listen 80» из yoursite.conf, если Apache имеет порт 80 в качестве порта по умолчанию.
источник