Команда ss — руководство по сокетам в Linux

Что такое команда ss
ss означает Socket Statistics — статистика сокетов. Это современная замена старому инструменту netstat. ss показывает информацию о сокетах: TCP, UDP, DCCP, RAW и Unix domain sockets. Команда обычно предустановлена в большинстве дистрибутивов Linux.
Важно: сокет — абстракция конечной точки сетевого соединения. Это может быть локальный файл (Unix socket) или сетевой порт.
Быстрое использование
Самая простая команда — запустить ss без аргументов. Вывод большой, поэтому удобно прокручивать через less:
ss | lessЧтобы смотреть только TCP-сокеты:
ss -t
Показать UDP-сокеты:
ss -uПо умолчанию ss показывает активные (established) соединения. Чтобы увидеть все TCP-сокеты — и слушающие, и подключённые:
ss -t -aПримеры ниже помогут выбрать правильные флаги для задач.
Полезные приёмы и фильтры
Состояния TCP
TCP-соединения проходят через состояния: LISTEN, SYN-SENT, ESTABLISHED, CLOSE_WAIT и другие. ss позволяет фильтровать по состоянию. Команда ниже показывает все подключённые сокеты (connected — все состояния, кроме LISTEN и CLOSED):
ss state connectedЧтобы увидеть только слушающие сокеты:
ss state listeningIPv4 и IPv6
Для фильтрации по версии IP используйте флаги -4 и -6.
Все подключённые IPv4 TCP-соединения:
ss -4 state connected
Все IPv6-сокеты:
ss -6Как узнать, какой процесс использует сокет
Чтобы увидеть PID и имя процесса, добавьте флаг -p. Пример для IPv4 TCP:
ss -4 -p state connectedВы увидите колонку с PID/Program name.

Краткая сводка
Чтобы получить компактную статистику по всем сокетам:
ss -sЭто покажет суммарные числа для TCP, UDP, RAW, Unix и т. д., а также распределение по состояниям.

Чек-лист по использованию ss (по ролям)
Sysadmin:
- Проверить, какие порты слушают:
ss -tuln - Найти процесс по порту:
ss -tulpn | grep :8080 - Быстрая сводка состояния:
ss -s
Разработчик:
- Проверить активные соединения для локальной отладки:
ss -4 state connected sport = :3000 or dport = :3000 - Узнать, не блокирует ли бэкенд сокеты:
ss -t state close-wait
Инженер по безопасности:
- Скрытые слушающие сервисы:
ss -tunap(под root) - Сопоставить PID с бинарью и проверить подписи/цепочку:
ss -tulpn
Шпаргалка команд (cheat sheet)
- Показать все слушающие TCP и UDP (с номерами портов):
ss -tuln- Показать процессы, использующие сокеты (требуется root для полного вывода):
sudo ss -tunap- Фильтрация по удалённому адресу или порту:
ss dst 1.2.3.4
ss dport = :443- Показывать таймеры и подробные параметры сокетов:
ss -o state establishedКогда ss не подойдёт
- Если нужна долговременная агрегированная статистика по трафику — ss не хранит историю. Используйте netflow/Prometheus/pcap-инструменты.
- Для глубокого анализа пакетов нужен tcpdump или Wireshark.
Методология быстрого расследования сетевых проблем
- Сбор контекста: узнайте IP/порт и процесс, которые вызывают проблему.
- Быстрый осмотр:
ss -tuln— есть ли сервис, слушающий порт?ss -p | grep <порт>— кто слушает?ss state syn-recv— есть ли незавершённые соединения?
- Если нужно, снимите дамп трафика:
tcpdump -i any port <порт> -w capture.pcap - Если подозрение на нагрузку: собрать метрики CPU/IO и количество сокетов через
ss -sи системный монитор.
Сравнение с netstat
- ss быстрее и показывает больше полей. netstat устарел и медленнее при большом числе соединений.
- netstat удобен для некоторых старых сценариев, но ss предпочтителен в современном администрировании.
Примеры шаблонов для повседневных задач
Найти процесс, слушающий порт 22:
ss -tulpn | grep :22Показать все соединения к базе данных на 5432:
ss -tn state established '( dport = :5432 or sport = :5432 )'Найти все соединения в состоянии CLOSE-WAIT (возможная утечка сокетов):
ss state close-waitПолезные эвристики и контрольные точки
- Если много соединений в TIME-WAIT — это нормальное поведение при большом объёме коротких клиентских подключений.
- Если много CLOSE-WAIT — приложение, вероятно, не закрывает сокеты корректно.
- LISTEN без процесса (rare) может указывать на временные проблемы с правами или быстрые перезапуски.
Визуальная подсказка выбора команды
flowchart TD
A[Нужна быстрая проверка] --> B{Что проверить?}
B -->|Какие порты слушают| C[ss -tuln]
B -->|Процесс по сокету| D[ss -p | grep :порт]
B -->|Все активные связи| E[ss -s]
B -->|Фильтрация по IP| F[ss dst 1.2.3.4]Небольшой глоссарий
- сокет — конечная точка сетевого взаимодействия
- LISTEN — сокет ожидает входящих подключений
- ESTABLISHED — активное двустороннее соединение
- CLOSE-WAIT — локальная сторона получила FIN и ещё не закрыла сокет
Часто задаваемые вопросы
Что делает ss лучше, чем netstat?
ss быстрее, эффективнее при больших объёмах соединений и предоставляет гибкие фильтры по состояниям и адресам.
Как посмотреть процесс, который держит порт?
Запустите sudo ss -tulpn — в выводе будет столбец с PID/именем программы.
Как показать только слушающие сокеты с номерами портов?
Используйте ss -tuln — опции: t=TCP, u=UDP, l=listening, n=показывать номера.
Итоги
- ss — обязательный инструмент для быстрого анализа сокетов в Linux.
- Он позволяет фильтровать по протоколам, состояниям, IP-версиям и связывать сокеты с процессами.
- Для глубокой сетевой телеметрии используйте специализированные системы мониторинга в дополнение к ss.
Итоговая проверка: если нужно быстро устранить проблему с подключениями, начните с ss -tuln, затем ss -p, и при необходимости добавьте ss -s для сводки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента