Linux 使用ss命令查看本机服务运行状态

前言
ss(Socket Statistics,套接字统计):可以显示各类协议、各种状态的套接字信息,从而有效跟踪服务运行状态(如服务是否启动)和服务端与客户端的连接状态。
目录
一、描述
二、命令
三、ss命令返回字段含义
四、总结
五、思维导图
一、描述
ss(Socket Statistics,套接字统计):可以用来获取socket统计信息,它显示的内容和netstat类似。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息被,而且比netstat更快。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。ss命令利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,因此ss命令的性能会好很多。
二、命令
1、语法
ss [选项]
2、常用选项
- [ -a ]:显示所有(侦听中和已建立的)的套接字;
- [ -u ]:只显示UDP传输协议的套接字;
- [ -p ]:显示使用套接字的进程信息,包括启动该服务的程序名称、进程号等;
- [ -e ]:显示详细的套接字信息(包含了以太网的统计信息),此选项可以与-s选项组合使用;
- [ -n ]:不解析服务名称,以数字方式显示;
- [ -4 ]:显示IPv4的套接字信息;
- [ -t ]:只显示TCP传输协议的套接字;
- [ -l ]:只显示处于侦听状态的套接字;
- [ -s ]:显示按协议统计信息。默认显示IP、IPv6、ICMP、TCP、TCPv6、UDP和UDPv6的统计信息;
- [ -m ]:显示套接字的内存使用情况;
- [ -r ]:将输出信息中的IP解析到主机名后再显示;
- [ -6 ]:显示IPv6的套接字信息。

3、ss命令的帮助信息
[root@localhost ~]# ss --help
Usage: ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]
-h, --help this message
-V, --version output version information
-n, --numeric don't resolve service names
-r, --resolve resolve host names
-a, --all display all sockets
-l, --listening display listening sockets
-o, --options show timer information
-e, --extended show detailed socket information
-m, --memory show socket memory usage
-p, --processes show process using socket
-i, --info show internal TCP information
-s, --summary show socket usage summary
-b, --bpf show bpf filter socket information
-E, --events continually display sockets as they are destroyed
-Z, --context display process SELinux security contexts
-z, --contexts display process and socket SELinux security contexts
-N, --net switch to the specified network namespace name
-4, --ipv4 display only IP version 4 sockets
-6, --ipv6 display only IP version 6 sockets
-0, --packet display PACKET sockets
-t, --tcp display only TCP sockets
-S, --sctp display only SCTP sockets
-u, --udp display only UDP sockets
-d, --dccp display only DCCP sockets
-w, --raw display only RAW sockets
-x, --unix display only Unix domain sockets
--vsock display only vsock sockets
-f, --family=FAMILY display sockets of type FAMILY
FAMILY := {inet|inet6|link|unix|netlink|vsock|help}
-K, --kill forcibly close sockets, display what was closed
-H, --no-header Suppress header line
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]
-D, --diag=FILE Dump raw information about TCP sockets to FILE
-F, --filter=FILE read filter information from FILE
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket := {syn-recv|time-wait}
big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
三、ss命令返回字段含义
[root@localhost ~]# ss -atn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
ESTAB 0 36 192.168.28.200:22 192.168.28.1:51342
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
在上面的输出结果中,从左到右共有5个字段,各字段的含义如下:
- State:表示连接状态(共11种),如:LISTEN(监听)、ESTABLISHED(连接已经建立)。
- Recv-Q:从远程主机传送过来的数据已经在本地接收缓冲,但是还没有被进程取走的字节数。
- Send-Q:表示对方没有收到的数据或者说没有应答Ack的字节数。
- Local Address:Port:表示本地地址和服务端口,默认显示主机名和服务名称,使用选项-n后显示主机的IP地址和端口号,若为“*”表示“所有”、若为“::”表示所有IPv6接口、若为“::1”表示IPv6回环接口lo。
- Peer Address:Port:表示与本机连接的远程主机的地址和端口,默认显示主机名和服务名称,使用选项-n后显示主机的IP地址及端口号。
例:查看所有的TCP端口和使用它们的进程
[root@localhost ~]# ss -tnap
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=722,fd=8))
LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1553,fd=6))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1184,fd=3))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",pid=1181,fd=12))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1561,fd=13))
LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",pid=1380,fd=9))
ESTAB 0 36 192.168.28.200:22 192.168.28.1:51342 users:(("sshd",pid=1380,fd=3))
LISTEN 0 128 :::111 :::* users:(("rpcbind",pid=722,fd=11))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=1184,fd=4))
LISTEN 0 128 ::1:631 :::* users:(("cupsd",pid=1181,fd=11))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=1561,fd=14))
LISTEN 0 128 ::1:6010 :::* users:(("sshd",pid=1380,fd=8))
四、总结
- ss(Socket Statistics,套接字统计):可以用来获取socket统计信息
- 显示的内容与netstat类似,但能够显示更多更详细的有关TCP和连接状态的信息
- ss命令返回5个字段的内容:State, Recv-Q, Send-Q, Local Address:Port, Peer Address:Port
五、思维导图

相关推荐
-
第18问:MySQL CPU 高了,怎么办?2025-02-24 10:27:18
-
mysql索引类型 normal, unique, full text
mysql索引类型 normal, unique, full text2025-02-24 10:05:05 -
uwsgi+django+nginx 搭建部分总结2025-02-24 10:03:33
-
使用Docker配置Nginx环境部署Nextcloud2025-02-24 10:02:03
-
Nginx安装和怎么使用2025-02-24 10:00:45