← Назад к вопросам

Что такое ss в Linux?

1.0 Junior🔥 192 комментариев
#Linux и администрирование#Сети и протоколы

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое команда ss в Linux?

Команда ss (Socket Statistics) — это современный инструмент для отображения статистики сетевых соединений в Linux, предназначенный для замены более старой и менее эффективной команды netstat.

Основное назначение и преимущества

ss предоставляет информацию о:

  • Сетевых сокетах (TCP, UDP, RAW).
  • Состоянии соединений (LISTEN, ESTABLISHED, CLOSE-WAIT и др.).
  • Портах, используемых локально и удаленно.
  • Процессах, связанных с конкретными сокетами.

Ключевые преимущества ss над netstat:

  • Высокая скорость работы: ss получает данные напрямую из пространства ядра (/proc/net/ и системных структур), что делает её значительно быстрее, особенно на системах с большим количеством соединений.
  • Более детализированная информация: Позволяет получать данные, которые netstat не показывает (например, расширенную информацию о TCP-соединениях).
  • Меньшая нагрузка на систему: Благодаря оптимизированному механизму сбора данных.

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

Базовый синтаксис команды:

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

1. Показать все соединения

ss -a

Эта команда отобразит все сокеты, включая слушающие (LISTEN) и установленные соединения.

2. Показать только TCP соединения

ss -t

Для UDP используйте -u.

3. Показать соединения с детальной информацией и процессами

ss -tlnp

Комбинация ключей здесь означает:

  • -t — только TCP.
  • -l — только слушающие порты (LISTEN).
  • -n — показывать порты в числовом формате (не преобразовывать в названия служб).
  • -p — показать процесс (PID и имя), который использует сокет.

Пример вывода:

State      Recv-Q Send-Q Local Address:Port      Peer Address:Port
LISTEN     0      128    *:22                   *:*            users:(("sshd",pid=1234,fd=3))

Это показывает, что процесс sshd (PID 1234) слушает на порту 22 (SSH).

4. Фильтрация по состоянию, порту или адресу

ss позволяет эффективно фильтровать вывод:

ss -tn state established

Покажет все активные (established) TCP-соединения.

ss -tn dst 192.168.1.5

Покажет соединения с конкретным удалённым адресом.

5. Мониторинг внутренних параметров TCP

ss может показывать низкоуровневую информацию из ядра:

ss -ti

Ключ -i отобразит внутреннюю статистику TCP (например, RTT — Round Trip Time, количество переотправлений, размер окна). Это крайне полезно для диагностики проблем с сетью.

Практическое применение для DevOps Engineer

В работе DevOps/SRE команда ss является незаменимым инструментом для:

  • Диагностики сетевых проблем: Быстро определить, какие порты открыты, какие службы слушают, есть ли нежелательные соединения.
  • Анализа нагрузки: Увидеть количество активных соединений к сервису (например, к веб-серверу или балансировщику).
  • Поиска конфликтов портов: Если служба не может стартовать, проверяем, не занят ли нужный порт другим процессом (ss -tlnp | grep :80).
  • Интеграции в мониторинг: Скрипты, использующие ss, могут собирать метрики о количестве соединений для алертинга.
  • Проверки безопасности: Аудит открытых портов и идентификация процессов, связанных с ними.

Краткое сравнение ss и netstat

Критерийssnetstat
Источник данныхПрямой доступ к структурам ядраЧасто через более медленные интерфейсы
СкоростьВысокаяМедленная, особенно при многих соединениях
Детализация TCPРасширенная (ключ -i)Ограниченная
РекомендацияОсновной инструмент для анализа сокетовИспользовать в случае отсутствия ss или для очень специфичных задач

Таким образом, ss — это мощный, быстрый и стандартный инструмент в арсенале администратора Linux. Для эффективной работы в DevOps необходимо хорошо знать его ключевые опции (–t, –l, –n, –p, –a, –i) и умение фильтровать вывод по состоянию (state), что позволяет мгновенно получать точную картину сетевой активности системы.