Команда ss в Linux — обзор и примеры использования

Команда ss (сокращение от socket statistics) — это современная утилита в Linux для отображения информации о сетевых соединениях и сокетах. Она является более быстрой и функциональной заменой устаревшей команды netstat и используется системными администраторами для диагностики, мониторинга и отладки сетевых проблем.
Основные сведения
- Название:
ss(socket statistics) - Основное назначение: вывод информации о сетевых сокетах (TCP, UDP, UNIX, RAW и др.)
- Современная альтернатива:
netstat(устарела в новых системах) - Расположение:
/usr/bin/ss - Пакет:
iproute2
Синтаксис
ss [опции] [фильтры]
Базовые примеры использования
| Команда | Описание |
|---|---|
ss | Показать все активные сокеты |
ss -t | Показать только TCP-соединения |
ss -u | Показать только UDP-соединения |
ss -l | Показать только слушающие порты (LISTEN) |
ss -a | Показать все соединения, включая прослушивающие |
ss -p | Отобразить процессы, использующие сокеты |
ss -n | Отображать IP и порты в числовом виде (без DNS-резолвинга) |
Примеры с пояснениями
Показать все TCP-подключения
ss -t -a
Выводит список всех TCP-сокетов, включая установленные соединения и порты в состоянии LISTEN.
Проверить, что слушает конкретный порт
ss -tln | grep 80
Показывает, какой процесс слушает порт 80.
Посмотреть процессы, использующие сокеты
sudo ss -tulpn
Выводит все TCP и UDP-порты с информацией о процессах и PID.
Активные соединения (ESTABLISHED)
ss -tn state established
UNIX-сокеты
ss -x
Пример вывода команды ss -tanp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=732,fd=3))
ESTAB 0 0 192.168.1.10:22 192.168.1.50:53418 users:(("sshd",pid=845,fd=4))
LISTEN 0 100 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=620,fd=12))
ESTAB 0 0 192.168.1.10:443 192.168.1.55:50213 users:(("nginx",pid=712,fd=7))
Пояснение колонок
- State — текущее состояние соединения (LISTEN, ESTAB, TIME-WAIT и т. д.).
- Recv-Q — количество байтов, ожидающих приёма приложением.
- Send-Q — количество байтов, ожидающих отправки в сеть.
- Local Address:Port — локальный IP-адрес и порт сокета.
- Peer Address:Port — удалённый IP-адрес и порт, с которым установлено соединение.
- Process — информация о процессе, использующем данный сокет (имя, PID и файловый дескриптор).
Состояния TCP
| Состояние | Описание |
|---|---|
| LISTEN | Сокет слушает входящие подключения |
| ESTABLISHED | Соединение установлено |
| SYN-SENT | Отправлен запрос на соединение |
| SYN-RECV | Получен запрос на соединение |
| FIN-WAIT-1 / 2 | Закрытие соединения |
| TIME-WAIT | Ожидание завершения сеанса |
| CLOSE-WAIT | Ожидание закрытия со стороны приложения |
| LAST-ACK | Последнее подтверждение перед закрытием |
Полезные фильтры
ss state established '( dport = :22 or sport = :22 )' ss dst 192.168.1.1 ss sport = :443
Статистика
ss -s
Показывает краткую статистику по состояниям TCP, UDP и UNIX-сокетов.
Сравнение с netstat
| Функция | ss | netstat |
|---|---|---|
| Скорость работы | ⚡ Высокая | 🐢 Медленная |
| Пакет | iproute2 | net-tools (устарел) |
| Фильтры | ✅ Да | ❌ Ограничены |
| Информация о процессах | ✅ Да | ✅ Да |
| Поддержка IPv6 | ✅ Полная | ✅ Частичная |
| UNIX-сокеты | ✅ Да | ✅ Да |
Популярные комбинации
sudo ss -tulnp | grep 443 # Кто слушает порт 443
ss -tna | grep 192.168.1.10 # Соединения с IP
ss -tan | awk '{print $6}' | sort | uniq -c | sort -nr # Подсчёт по состояниям
ss -xlp # Локальные UNIX-сокеты
Заключение
Команда ss — незаменимый инструмент для сетевой диагностики в Linux. Она сочетает высокую скорость работы, гибкие фильтры, поддержку различных типов сокетов и возможность быстро определить, какие процессы используют порты. В современных дистрибутивах Ubuntu, Debian, Fedora, CentOS именно ss является стандартом вместо netstat.
Редактор: AndreyEx