разница между netstat и ss в linux?

в linux команда netstat сообщает нам информацию об активных сокетах в системе.

Я понимаю, что netstat использует /proc/net/tcp для получения информации о сети.

С netstat man page говорит, что netstat устарел, поэтому мы должны использовать 'ss'.

NOTE
   This program is obsolete.  Replacement for netstat is ss.   Replacement
   for  netstat -r is ip route.  Replacement for netstat -i is ip -s link.
   Replacement for netstat -g is ip maddr.

я обнаружил, что ss выполняет аналогичные функции, но не использует /proc/net/tcp для получения информации о сети системы.

теперь мне любопытно, как ss получает информация о системном сетевом сокете?

4 ответов


Он получает их из пространства ядра напрямую, используя Netlink, который использует классический розетки API-интерфейс.


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


проверьте источник для ss:

https://github.com/shemminger/iproute2/blob/master/misc/ss.c

в основном он напрямую запрашивает ядро и может реагировать намного быстрее, чем netstat.


ss - утилита, используемая для исследования сокетов в системах Linux и Unix. Он показывает информацию, похожую на netstat и способный для того чтобы сбросить статистику гнезда.

но netstat невозможно заменить полностью на ss. Некоторые netstat команды лучше соответствуют .

$ netstat -r   replaced by  $ ip route
$ netstat -i   replaced by  $ ip -s lin
$ netstat -g   replaced by  $ ip maddr.

Я бы сказал "старше"netstat команда может быть заменена на оба ss и вместе.