Комментарии 13
Уже пару лет пользуюсь этим инструментом. Во всех современных дистрибутивах netstat уже выпили по умолчанию.
Стоит отменить полезный флаг -p, который позволит узнать какому-же все-таки процессу принадлежит соединение.
Итого обычно нужны ss -tp
и ss -tl
Он ублюдский. Вывод ss с этим флагом даже не имеет заголовка. Пишет кучу ненужного текста, типа users((«vsftpd»,pid=2306,fd=3)) ЗАЧЕМ?? netstat -tnlp против ss даст заголовок PID/Program name и напишет 2306/vsftpd Нормально, лаконично, нет ненужных символов. ss вместо 0.0.0.0 выводит *. Из-за этого мы имеем на экране не ровную таблицу со всей необходимой информацией, а широкую простыню которую можно читать только через less. При этом информации в ss -tnlp и netstat -tnlp будет одинаково, только вывод ss нечитаемый от слова совсем. Нафига козе боян?
Может не по глазам, но никак не могу понять как с помощью ss посмотреть кто занял определенный порт и какие порты слушает определенный процесс?
netstat -nlpt|grep 443
netstat -nlpt|grep apache2
netstat -nlpt|grep 443
netstat -nlpt|grep apache2
Как-то так:
ss -nlpt|grep 443
ss -nlpt|grep apache2
ss -nlpt|grep 443
ss -nlpt|grep apache2
Узнать, кто занял порт, можно одной из следующих команд:
ss -p state listening '( sport = :443 )'
ss -tlp '( sport = :443 )'
ss -p state listening '( sport = :http or sport = :https )'
Процесс:
ss -4tlp | grep nginx
Можно ещё добавить:
ss -tlp '( sport = :443 )' | tr -d '\t'
если на дисплее не помещается :-)
В отличие от команды netstat, ss не выводит сведения о PID и имени команды, ответственной за конкретное соединение.
Дык netstat
тоже по умолчанию не выводит этой инфы. Обеим коммандам надо ключ -p
передавать для этого. Отличие лишь в формате.
Уже маны начали как статьи оформлять
Читал, думал, «а дай ка напишу», а оказывается многие и не знали. Ну чтож, спасибо за статью.
ЗЫ: Как сказал Merifri, порт вполне можно проверить.
ЗЫ: Как сказал Merifri, порт вполне можно проверить.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Первое знакомство с командой ss