В чем разница между netstat и ss в Linux?

«В чем разница между netstat и ss в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Обе утилиты служат для анализа сетевых соединений, сокетов и статистики, но ss — это современная замена устаревшему netstat.

netstat (из пакета net-tools)

  • Статус: Считается устаревшим (deprecated) в большинстве современных дистрибутивов Linux.
  • Источник данных: Читает информацию из файлов в /proc/net/, что медленнее и может показывать неполные данные.
  • Функциональность: Базовый набор функций для отображения соединений, таблиц маршрутизации, интерфейсов.

ss (Socket Statistics, из пакета iproute2)

  • Статус: Рекомендуемая современная утилита.
  • Источник данных: Получает данные напрямую из структур ядра через netlink, что делает ее значительно быстрее и точнее, особенно на системах с большим количеством соединений.
  • Функциональность: Более мощная фильтрация и детализация. Позволяет фильтровать по состоянию сокета, адресам, портам.

Сравнение команд:

# Показать все слушающие TCP-порты
netstat -tln
ss -tln

# Показать все установленные соединения для конкретного процесса
netstat -tup | grep nginx
ss -tup state established dst :443

# Показать сокеты в состоянии TIME-WAIT (очень быстро с ss)
ss -o state time-wait

Практический вывод: В скриптах автоматизации и для диагностики в DevOps следует использовать ss. Основная причина — скорость и надежность. Например, при мониторинге большого количества соединений на балансировщике нагрузки ss отработает мгновенно, в то время как netstat может "подвисать".