CentOS 7 下 ss 替代 netstat

引言

在一台 CentOS 7 服务器上使用 netstat 命令时,提示没有此命令。为什么?

CentOS 7 下 ss 替代 netstat

原因是什么?简单来说,在有大量 sockets 时,ss 更加高效快速。 下面这篇文章对此进行了详细说明。我这就不再多说了。
《篡权的 ss》

ss 输出格式有缺憾

既然 CentOS 7 在默认最小化安装中摒弃了 netstat (属于 net-tools 包),那么还是熟悉使用 ss 吧。
我使用 netstat 最常用的选项是 netstat -lntp,转换到 ss 时,几个选项都还继承了 netstat 的意义。


[root@linux-node2 ~]# ss -ltnp
State      Recv-Q Send-Q                                                            Local Address:Port                                                                           Peer Address:Port              
LISTEN     0      50                                                                            *:3306                                                                                      *:*                   users:(("mysqld",pid=3310,fd=14))
LISTEN     0      50                                                                192.168.56.12:9200                                                                                      *:*                   users:(("java",pid=30992,fd=85))
LISTEN     0      128                                                                           *:8081                                                                                      *:*                   users:(("httpd",pid=58518,fd=3),("httpd",pid=32905,fd=3),("httpd",pid=32904,fd=3),("httpd",pid=32903,fd=3),("httpd",pid=32902,fd=3),("httpd",pid=32901,fd=3))
LISTEN     0      50                                                                192.168.56.12:9300                                                                                      *:*                   users:(("java",pid=30992,fd=80))
LISTEN     0      128                                                                           *:22                                                                                        *:*                   users:(("sshd",pid=20133,fd=3))
LISTEN     0      100                                                                   127.0.0.1:25                                                                                        *:*                   users:(("master",pid=2048,fd=13))
LISTEN     0      511                                                                           *:5601                                                                                      *:*                   users:(("node",pid=32500,fd=11))
LISTEN     0      100                                                                         ::1:25                                                                                       :::*                   users:(("master",pid=2048,fd=14))
[root@linux-node2 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3310/mysqld         
tcp        0      0 192.168.56.12:9200      0.0.0.0:*               LISTEN      30992/java          
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      32901/httpd         
tcp        0      0 192.168.56.12:9300      0.0.0.0:*               LISTEN      30992/java          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      20133/sshd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2048/master         
tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      32500/node          
tcp6       0      0 ::1:25                  :::*                    LISTEN      2048/master  

看了上面 ss 和 netstat 的输出结果(这里显示得很长,实际在日常使用的终端连接软件上,一般最后一列会换行),
真让我不太想用 ss 了,有没有办法格式化下输出呢?
不止我一人这样想,ss - linux socket statistics utility output format 里面的这位和我一样的想法。
回答里面具体说了 ss 输出格式不太美观的原因,也推荐了几种方法稍微格式化一下输出。
ss -lntp | cat

现在我还是 2 个命令都使用,因为还是看不太惯 ss 的程序信息列输出。

Ref

《篡权的 ss》
ss - linux socket statistics utility output format
Commands not found: netstat, nmap on CentOS 7