Команда ss: главный манометр для медных труб и паровых шлюзов

Когда паровая сеть вашего сервера начинает непредсказуемо свистеть или, наоборот, теряет давление, настоящий инженер не гадает на кофейной гуще. Он тянется за тяжелым инструментом в латунной оправе, который подключается напрямую к напорным линиям ядра. Этот инструмент — команда ss (Socket Statistics). Она пришла на замену старому, заржавевшему netstat, который больше не справлялся с высокими нагрузками и многопоточными потоками пара на современных фабриках.

В прежние времена, чтобы узнать, какой клапан стравливает пар в атмосферу, сисадмину приходилось ждать, пока netstat медленно разберет каталог /proc, натужно скрежеща ржавыми шестеренками. Команда ss действует иначе: она открывает прямой обходной канал к ядру через подсистему netlink. Это позволяет ей мгновенно отображать состояние каждого отдельного сокета, даже если через ваши медные трубы одновременно проходят десятки тысяч соединений.

Нужно ли вам выяснить, почему местная паровая турбина (например, Nginx) не запускается, или вы хотите выследить несанкционированное подключение с неизвестного дирижабля — ss выдаст точнейшую диагностику. Она показывает состояния линий TCP, пневматических импульсов UDP и локальных сокетов Unix со скоростью автоматической механической масленки.



Синтаксис

Укрощение этого механизма начинается с подачи правильных управляющих команд на его входной клапан:

ss [опции] [фильтр]

Основные опции

Чтобы манометр показал именно то, что нужно сисадмину, его латунные переключатели необходимо выставить в правильное положение. Вот таблица самых надежных настроек для вашей котельной:

ОпцияОписаниеПример
-tПаровые магистрали TCP. Выводит только TCP-соединения, по которым идет основной поток данных.ss -t
-uСкоростные пневмопотоки UDP. Показывает легковесные UDP-пакеты, летящие без подтверждения доставки.ss -u
-lКлапаны в режиме ожидания. Отображает только слушающие сокеты (listening), которые ждут внешнего давления.ss -l
-aПолный осмотр котельной. Выводит абсолютно все сокеты: и те, что слушают, и те, что уже качают пар.ss -a
-nПрямые показания в цифрах. Запрещает переводить номера портов и IP-адреса в имена служб. Экономит время.ss -n
-pКлеймо мастера. Показывает, какой именно локальный процесс (PID) и какой механизм держит этот порт.ss -p
-sСводный манометр. Выдает краткую и емкую статистику по всем типам соединений в виде аккуратного отчета.ss -s
-iГлубинный анализ стенок. Показывает внутреннюю техническую информацию TCP (RTT, окно отправки и т.д.).ss -ti

Примеры использования

Проверка открытых портов, готовых принять давление

Когда сисадмин запускает новый веб-сервер или службу точного времени, ему нужно убедиться, что соответствующий шлюз открыт наружу и слушает сеть. Комбинация опций -tulnp — это классический «золотой стандарт» для инженера.

sudo ss -tulnp

Охота на чужаков: поиск активных TCP-соединений

Если шестеренки сервера начали вращаться слишком быстро, а уголь в топке сгорает без видимой причины, стоит проверить, кто подключен к вашей машине прямо сейчас. Мы убираем флаг -l (так как ищем не слушающие, а уже работающие линии) и смотрим на результат:

ss -tan

Если нужно отфильтровать поток и оставить только соединения с конкретным веб-портом 80 (или любым другим), ss позволяет использовать встроенные фильтры без привлечения тяжелых сторонних инструментов вроде grep:

ss -to state established 'sport = :80 or dport = :80'

Снятие общих показаний со всей фабрики сокетов

Когда времени в обрез, а руководство требует быстрый отчет о состоянии сетевой инфраструктуры, сисадмин не копается в тысячах строк логов. Он вызывает лаконичную сводку, которая мгновенно раскладывает всё по полочкам.

ss -s

Этот отчет покажет, сколько всего сокетов открыто, сколько из них используют протоколы IPv4 и IPv6, а также текущее состояние транспортных магистралей TCP и UDP.

💡 Совет

Постоянно вводить sudo ss -tulnp — занятие для механических автоматонов, а не для живого инженера. Облегчите себе жизнь, добавив в свой файл конфигурации .bashrc короткий и звучный алиас. Например: alias gauges="sudo ss -tulnp". Теперь один короткий удар по клавишам мгновенно покажет все живые порты.

⚡ Важно

Помните, что запуск ss без прав суперпользователя (sudo) значительно снижает точность прибора. Манометр послушно покажет вам сами трубы и порты, но флаг -p не сможет считать клеймо мастера. Вместо имени процесса (например, nginx или sshd) и его PID вы увидите пустые поля, так как ядро скроет эту информацию из соображений безопасности.



⚙️ Машинное отделение ROADIT благодарит за прочтение.
Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале.
📋 Все команды

Оставьте комментарий