前言
目前正在出一个Linux命令
系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~
作为服务端开发,linux
命令还是要掌握一下的,可以做做基础性的运维。好了, 废话不多说直接开整吧~
free
显示系统中可用和可用的物理内存和交换内存的总量,以及内核使用的缓冲区和高速缓存
语法:
free [options]
命令参数:
-b 以Byte为单位显示内存使用情况。 -k 以KB为单位显示内存使用情况。 -m 以MB为单位显示内存使用情况。 -g 以GB为单位显示内存使用情况。 -o 不显示缓冲区调节列。 -s<间隔秒数> 持续观察内存使用状况。 -t 显示内存总和列。
使用示例:
# 显示内存使用情况 [root@iZ2ze5vrnucj8nu52fq932Z ~]# free total used free shared buff/cache available Mem: 1881820 804136 75396 1132 1002288 904612 Swap: 1049596 0 1049596 [root@iZ2ze5vrnucj8nu52fq932Z ~]# total: 总物理内存大小 used: 已使用 free: 可用 Shared: 多个进程共享的内存总额 Buffers/cached: 磁盘缓存的大小 # 周期性统计 每5秒统计一次 [root@iZ2ze5vrnucj8nu52fq932Z ~]# free -s 5 total used free shared buff/cache available Mem: 1881820 804972 73288 1132 1003560 903820 Swap: 1049596 0 1049596 total used free shared buff/cache available Mem: 1881820 807120 71132 1132 1003568 901672 Swap: 1049596 0 1049596
top
提供正在运行的系统的动态实时视图。它可以显示系统摘要信息以及Linux内核当前正在管理的进程或线程的列表。所显示的系统摘要信息的类型以及为进程显示的信息的类型,顺序和大小都是用户可配置的,并且可以使配置在重新启动后保持不变。
该程序为流程操作提供了一个有限的交互式界面,并为个人配置提供了更为广泛的界面-涵盖了其操作的各个方面。尽管在本文档中始终引用top,但是您可以随意为程序命名。然后,该新名称(可能是别名)将反映在顶部的显示屏上,并在读写配置文件时使用。
语法:
top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]
命令参数:
-b 批处理 -c 显示完整的治命令 -I 忽略失效过程 -s 保密模式 -S 累积模式 -i<时间> 设置间隔时间 -u<用户名> 指定用户名 -p<进程号> 指定进程 -n<次数> 循环显示的次数
使用示例:
[root@iZ2ze5vrnucj8nu52fq932Z ~]# top top - 09:51:58 up 584 days, 12:23, 1 user, load average: 0.01, 0.04, 0.05 Tasks: 101 total, 2 running, 99 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.0 us, 1.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1881820 total, 79580 free, 806556 used, 995684 buff/cache KiB Swap: 1049596 total, 1049596 free, 0 used. 902292 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17370 root 10 -10 134744 16928 11220 S 0.7 0.9 24:59.18 AliYunDunMonito 554 root 20 0 614220 22172 5220 S 0.3 1.2 1408:05 exe 17391 1001 20 0 10.7g 11272 2576 S 0.3 0.6 280:01.78 etcd 17592 root 20 0 750048 14652 3932 S 0.3 0.8 165:04.51 user-api 1 root 20 0 191360 3352 1628 S 0.0 0.2 17:05.98 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.15 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 24:31.19 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 190:18.41 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 11 root rt 0 0 0 0 S 0.0 0.0 2:13.01 watchdog/0 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs ...... ....... .......... 第一行 任务队列信息 第二行 Tasks — 任务(进程) 第三行 cpu状态信息 第四行 内存状态 第五行 swap交换分区信息 第七行以下 各进程(任务)的状态监控 相关描述: PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR — 共享内存大小,单位kb S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU — 上次更新到现在的CPU时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)
sar
目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、 系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
这个命令看系统信息可以说是非常的好用,有兴趣的同学可以多去了解一下
语法:
sar [options] [-A] [-o file] t [n]
命令参数:
-b I/O 和传输速率信息状况 -B 分页状况 -d 块设备状况 -I { <中断> | SUM | ALL | XALL } 中断信息状况 -m 电源管理信息状况 -n { <关键词> [,...] | ALL } 网络统计信息 关键词可以是: DEV 网卡 EDEV 网卡 (错误) NFS NFS 客户端 NFSD NFS 服务器 SOCK Sockets (套接字) (v4) IP IP 流 (v4) EIP IP 流 (v4) (错误) ICMP ICMP 流 (v4) EICMP ICMP 流 (v4) (错误) TCP TCP 流 (v4) ETCP TCP 流 (v4) (错误) UDP UDP 流 (v4) SOCK6 Sockets (套接字) (v6) IP6 IP 流 (v6) EIP6 IP 流 (v6) (错误) ICMP6 ICMP 流 (v6) EICMP6 ICMP 流 (v6) (错误) UDP6 UDP 流 (v6) -q 队列长度和平均负载 -r 内存利用率 -R 内存状况 -S 交换空间利用率 -u [ ALL ] CPU 利用率 -v Kernel table 状况 -w 任务创建与系统转换统计信息 -W 交换信息 -y TTY 设备状况 -o {<文件路径>} 将命令结果以二进制格式存放在指定文件中
使用示例:
统计网络信息
命令中 1 3 表示每一秒钟取 1 次值,一共取 3 次;命令执行后会列出每个网卡这 3 次取值的平均数据。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -n DEV 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 09:59:00 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 09:59:01 AM br-0c2040b89567 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:01 AM eth0 3.06 2.04 0.18 0.25 0.00 0.00 0.00 09:59:01 AM br-b92e519c7565 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:01 AM br-2deca97b839e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:01 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 09:59:02 AM br-0c2040b89567 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:02 AM eth0 17.82 14.85 1.39 16.64 0.00 0.00 0.00 09:59:02 AM br-b92e519c7565 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:02 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:02 AM br-2deca97b839e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:02 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 09:59:03 AM br-0c2040b89567 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:03 AM eth0 4.08 3.06 0.25 0.87 0.00 0.00 0.00 09:59:03 AM br-b92e519c7565 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:03 AM lo 2.04 2.04 0.10 0.10 0.00 0.00 0.00 09:59:03 AM br-2deca97b839e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 09:59:03 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: br-0c2040b89567 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 8.42 6.73 0.61 6.03 0.00 0.00 0.00 Average: br-b92e519c7565 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: lo 0.67 0.67 0.03 0.03 0.00 0.00 0.00 Average: br-2deca97b839e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
CPU 利用率
命令中 1 3 表示每一秒钟取 1 次值,一共取 3 次。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -u 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 10:00:29 AM CPU %user %nice %system %iowait %steal %idle 10:00:30 AM all 1.01 0.00 1.01 0.00 0.00 97.98 10:00:31 AM all 0.00 0.00 0.00 0.00 0.00 100.00 10:00:32 AM all 1.01 0.00 1.01 0.00 0.00 97.98 Average: all 0.68 0.00 0.68 0.00 0.00 98.65 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
内存利用率
# [root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -r 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 10:01:08 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 10:01:09 AM 100472 1781348 94.66 77596 870992 1665916 56.83 728228 860364 360 10:01:10 AM 100472 1781348 94.66 77596 870992 1665916 56.83 728228 860364 360 10:01:11 AM 100472 1781348 94.66 77596 870992 1665916 56.83 728232 860364 360 Average: 100472 1781348 94.66 77596 870992 1665916 56.83 728229 860364 360 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
kbmemfree
空闲内存,不包括cache
空间kbmemused
使用内存,不包括内核使用空间%memused kbmemused
和内存总量(不包括SWAP
)的百分比kbbuffers
和kbcached
内核使用的buff/cache
空间kbcommit
当前系统运行所需的内存,用于评估RAM+SWAP
总的大小保证程序不会被OOM
%commit
kbcommit
与内存总量(包括 swap)的一个百分比,该值可能会超过 100%,因为内存允许overcommit
系统页面 SWAP 信息
[root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -W 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 10:02:09 AM pswpin/s pswpout/s 10:02:10 AM 0.00 0.00 10:02:11 AM 0.00 0.00 10:02:12 AM 0.00 0.00 Average: 0.00 0.00 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
I/O 和传输速率信息状况
[root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -b 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 10:02:33 AM tps rtps wtps bread/s bwrtn/s 10:02:34 AM 4.08 0.00 4.08 0.00 114.29 10:02:35 AM 0.00 0.00 0.00 0.00 0.00 10:02:36 AM 0.00 0.00 0.00 0.00 0.00 Average: 1.35 0.00 1.35 0.00 37.84 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
tps
每秒钟物理设备的 I/O 传输总量rtps
每秒钟从物理设备读入的数据总量wtps
每秒钟向物理设备写入的数据总量bread/s
每秒钟从物理设备读入的数据量,单位为:块/sbwrtn/s
每秒钟向物理设备写入的数据量,单位为:块/s
系统调度队列长度和平均负载
[root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -q 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 10:03:17 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:03:18 AM 1 402 0.00 0.01 0.05 0 10:03:19 AM 2 402 0.00 0.01 0.05 0 10:03:20 AM 1 402 0.00 0.01 0.05 0 Average: 1 402 0.00 0.01 0.05 0 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
runq-sz
运行队列的长度(等待运行的进程数)plist-sz
进程列表中进程(processes
)和线程(threads
)的数量ldavg-1
最后1
分钟的系统平均负载(System load average
)ldavg-5
过去5
分钟的系统平均负载ldavg-15
过去15
分钟的系统平均负载
块设备状况
[root@iZ2ze5vrnucj8nu52fq932Z ~]# sar -d 1 3 Linux 3.10.0-1160.49.1.el7.x86_64 (iZ2ze5vrnucj8nu52fq932Z) 08/25/2023 _x86_64_ (1 CPU) 10:03:55 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:03:56 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:03:56 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:03:57 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:03:57 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:03:58 AM dev253-0 1.00 0.00 8.00 8.00 0.00 1.00 2.00 0.20 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: dev253-0 0.34 0.00 2.68 8.00 0.00 1.00 2.00 0.07 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
tps
每秒从物理磁盘 I/O 的次数。多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的 |rd_sec/s
每秒读扇区的次数wr_sec/s
每秒写扇区的次数avgrq-sz
平均每次设备 I/O 操作的数据大小(扇区)avgqu-sz
磁盘请求队列的平均长度await
从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒)svctm
系统处理每次请求的平均时间,不包括在请求队列中消耗的时间%util
I/O
请求占CPU
的百分比,比率越大,说明越饱和 1.avgqu-sz
的值较低时,设备的利用率较高 2. 当%util
的值接近1%
时,表示设备带宽已经占满
ss
Socket Statistics
的缩写。顾名思义,ss
命令可以用来获取socket
统计信息,它可以显示和netstat
类似的内容。ss
的优势在于它能够显示更多更详细的有关TCP
和连接状态的信息,而且比netstat
更快速更高效
这个命令也很好用,有时候我们可以通过它统计的信息来判断我们应用程序接口的性能问题,比如程序处理太慢了 或者 应用存在阻塞情况 都可以反应出来
语法:
ss [options] [ FILTER ]1.
直接看使用示例:
###列出已建立的连接
默认情况下,如果我们运行ss命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如TCP,UDP或UNIX套接字
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss | head -n 5 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 14651 * 14652 u_str ESTAB 0 0 * 122802224 * 122802227 u_str ESTAB 0 0 * 16288 * 16289 u_str ESTAB 0 0 * 12717 * 12718 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
显示监听套接字
可以看到本地监听的应用程序的端口
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:http *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:hbci *:* LISTEN 0 100 127.0.0.1:smtp *:* LISTEN 0 128 *:https *:* LISTEN 0 128 127.0.0.1:cslistener *:* LISTEN 0 128 *:6379 *:* LISTEN 0 128 [::]:http [::]:* LISTEN 0 128 [::]:8788 [::]:* LISTEN 0 100 [::1]:smtp [::]:* [root@iZ2ze5vrnucj8nu52fq932Z ~]#
显示进程
我们可以用-p选项打印出拥有套接字的进程或PID号。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -pl Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:dockerd-current/17076 * nl UNCONN 4352 0 tcpdiag:ss/4123 * nl UNCONN 768 0 tcpdiag:kernel * nl UNCONN 0 0 xfrm:kernel * nl UNCONN 0 0 xfrm:dockerd-current/17076 * nl UNCONN 0 0 selinux:kernel * nl UNCONN 0 0 audit:auditd/432 * nl UNCONN 0 0 audit:kernel * nl UNCONN 0 0 audit:systemd/1 * nl UNCONN 0 0 fiblookup:kernel * nl UNCONN 0 0 connector:kernel * nl UNCONN 768 0 connector:AliYunDunMonito/17370 * ..... .... ......
不解析服务名称
默认情况下,ss只会解析端口号,如果我们指定-n选项,只看到的是端口号而不是服务名称。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -n Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 14651 * 14652 u_str ESTAB 0 0 * 122802224 * 122802227 u_str ESTAB 0 0 * 16288 * 16289 u_str ESTAB 0 0 * 12717 * 12718 u_str ESTAB 0 0 /run/systemd/journal/stdout 21999 * 21994 u_str ESTAB 0 0 * 16264 * 16265 u_str ESTAB 0 0 * 16312 * 16313 u_str ESTAB 0 0 * 695194583 * 695194582 u_str ESTAB 0 0 * 663856012 * 663856013 u_str ESTAB 0 0 * 16292 * 16291 u_str ESTAB 0 0 * 695203061 * 695203062 u_str ESTAB 0 0 * 16261 * 16260 u_str ESTAB 0 0 * 16316 * 16315 u_str ESTAB 0 0 * 695194582 * 695194583 u_str ESTAB 0 0 * 16254 * 16253 u_str ESTAB 0 0 * 16274 * 16273 u_str ESTAB 0 0 * 16304 * 16303 u_str ESTAB 0 0 /run/dbus/system_bus_socket 15017 * 15016 u_str ESTAB 0 0 * 539104472 * 0 u_str ESTAB 0 0 * 16286 * 16285 u_str ESTAB 0 0 /run/systemd/journal/stdout 21446 * 21435 u_str ESTAB 0 0 /run/systemd/journal/stdout 122802227
解析数字地址/端口
用-r选项可以解析IP地址和端口号
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -r tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.141:8257 tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.203:59573 tcp ESTAB 0 0 localhost:6379 localhost:33206 tcp FIN-WAIT-2 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.212:51695 tcp ESTAB 0 0 localhost:6379 localhost:35238 tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:60950 100.100.27.15:squid tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:45104 100.100.30.26:http tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.173:25775 tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.203:34279 tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.44:46903 tcp ESTAB 0 16564 iZ2ze5vrnucj8nu52fq932Z:ssh 218.94.54.82:paging-port tcp ESTAB 0 0 iZ2ze5vrnucj8nu52fq932Z:https 113.219.202.212:8507 tcp ESTAB 0 0 localhost:35238 localhost:6379 tcp ESTAB 0 0 localhost:33206 localhost:6379 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
IPv4套接字
我们可以通过-4选项只显示与IPv4套接字对应的信息。在下面的例子中,我们还使用-l选项列出了在IPv4地址上监听的所有内容。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -l4 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:bootpc *:* udp UNCONN 0 0 127.0.0.1:323 *:* tcp LISTEN 0 128 *:http *:* tcp LISTEN 0 128 *:ssh *:* tcp LISTEN 0 128 127.0.0.1:hbci *:* tcp LISTEN 0 100 127.0.0.1:smtp *:* tcp LISTEN 0 128 *:https *:* tcp LISTEN 0 128 127.0.0.1:cslistener *:* tcp LISTEN 0 128 *:6379 *:* [root@iZ2ze5vrnucj8nu52fq932Z ~]#
IPv6套接字
同样,我们可以使用-6选项只显示与IPv6套接字相关信息。在下面的例子中,我们还使用-l选项列出了在IPv6地址上监听的所有内容。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -l6 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 [::1]:323 [::]:* tcp LISTEN 0 128 [::]:http [::]:* tcp LISTEN 0 128 [::]:8788 [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:* [root@iZ2ze5vrnucj8nu52fq932Z ~]#
只显示TCP
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:http *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:hbci *:* LISTEN 0 100 127.0.0.1:smtp *:* LISTEN 0 128 *:https *:* LISTEN 0 128 127.0.0.1:cslistener *:* LISTEN 0 128 *:6379 *:* LISTEN 0 128 [::]:http [::]:* LISTEN 0 128 [::]:8788 [::]:* LISTEN 0 100 [::1]:smtp [::]:* [root@iZ2ze5vrnucj8nu52fq932Z ~]#
显示UDP
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -ul State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:bootpc *:* UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 [::1]:323 [::]:* [root@iZ2ze5vrnucj8nu52fq932Z ~]#
Unix套接字
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -x Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 14651 * 14652 u_str ESTAB 0 0 * 122802224 * 122802227 u_str ESTAB 0 0 * 16288 * 16289 u_str ESTAB 0 0 * 12717 * 12718 u_str ESTAB 0 0 /run/systemd/journal/stdout 21999 * 21994 u_str ESTAB 0 0 * 16264 * 16265 u_str ESTAB 0 0 * 16312 * 16313 u_str ESTAB 0 0 * 695194583 * 695194582 u_str ESTAB 0 0 * 663856012 * 663856013 u_str ESTAB 0 0 * 16292 * 16291 u_str ESTAB 0 0 * 695203061 * 695203062 u_str ESTAB 0 0 * 16261 * 16260 u_str ESTAB 0 0 * 16316 * 16315 u_str ESTAB 0 0 * 695194582 * 695194583 ... ......
显示所有信息
-a
选项显示所有的监听和非监听套接字,在TCP的情况下,这意味着已建立的连接。这个选项与其他的组合很有用,例如可以添加-a选项显示所有的UDP套接字,默认情况下只有-u选项我们看不到多少信息。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -u Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 172.19.17.24:32991 100.100.5.2:ntp [root@iZ2ze5vrnucj8nu52fq932Z ~]# [root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -ua State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:bootpc *:* UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 [::1]:323 [::]:*
显示套接字内存使用情况
-m
选项可用于显示每个套接字使用的内存量。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -ltm State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:http *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d14584) LISTEN 0 128 *:ssh *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d37322) LISTEN 0 128 127.0.0.1:hbci *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) LISTEN 0 100 127.0.0.1:smtp *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) LISTEN 0 128 *:https *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d28159) LISTEN 0 128 127.0.0.1:cslistener *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) LISTEN 0 128 *:6379 *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) LISTEN 0 128 [::]:http [::]:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) LISTEN 0 128 [::]:8788 [::]:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) LISTEN 0 100 [::1]:smtp [::]:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0,d0) [root@iZ2ze5vrnucj8nu52fq932Z ~]#
显示TCP内部信息
我们可以使用-i
选项请求额外的内部TCP信息。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -lti State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:http *:* cubic rto:1000 mss:536 cwnd:10 segs_in:1670546 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 128 *:ssh *:* cubic rto:1000 mss:536 cwnd:10 segs_in:8594780 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 128 127.0.0.1:hbci *:* cubic rto:1000 mss:536 cwnd:10 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 100 127.0.0.1:smtp *:* cubic rto:1000 mss:536 cwnd:10 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 128 *:https *:* cubic rto:1000 mss:536 cwnd:10 segs_in:1150200 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 128 127.0.0.1:cslistener *:* cubic rto:1000 mss:536 cwnd:10 segs_in:95774 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 128 *:6379 *:* cubic rto:1000 mss:536 cwnd:10 segs_in:26 lastsnd:3259275478 lastrcv:3259275478 lastack:3259275478 LISTEN 0 128 [::]:http [::]:* cubic rto:1000 mss:536 cwnd:10 lastsnd:3259275484 lastrcv:3259275484 lastack:3259275484 LISTEN 0 128 [::]:8788 [::]:* cubic rto:1000 mss:536 cwnd:10 segs_in:34644 lastsnd:3259275484 lastrcv:3259275484 lastack:3259275484 LISTEN 0 100 [::1]:smtp [::]:* cubic rto:1000 mss:536 cwnd:10 lastsnd:3259275484 lastrcv:3259275484 lastack:3259275484 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
在每个侦听套接字下面,我们可以看到更多信息。注意:-i
选项不适用于UDP
,如果您指定-u
,而非-t
,则不会显示这些额外的信息。
显示统计信息
我们可以使用-s
选项快速查看统计数据。
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -s Total: 229 (kernel 293) TCP: 21 (estab 7, closed 4, orphaned 0, synrecv 0, timewait 4/0), ports 0 Transport Total IP IPv6 * 293 - - RAW 0 0 0 UDP 3 2 1 TCP 17 12 5 INET 20 14 6 FRAG 0 0 0 [root@iZ2ze5vrnucj8nu52fq932Z ~]#
这使我们能够快速看到已建立连接的总数,及各种类型的套接字的计数和IPv4
或IPv6
的使用情况。
这里边的指标TCP
里边的各值可以给我们很好的参考,正常情况下,服务器性能不差,应用程序性能良好的话, timewait
值都会很低,当然这个要跟连接数一起比较,如果哪天彪的很高,这个时候你就要注意了是不是应用程序哪个环节有问题,导致出现了性能问题。
根据端口号进行过滤
可以通过过滤还可以列出小于(lt),大于(gt),等于(eq),不等于(ne),小于或等于(le),或大于或等于(ge)的所有端口
[root@iZ2ze5vrnucj8nu52fq932Z ~]# ss -ltn sport gt 500 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:3000 *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 128 *:6379 *:* LISTEN 0 128 [::]:8788 [::]:* [root@iZ2ze5vrnucj8nu52fq932Z ~]#
结束语
命令很多,大家不用去背,可以放到便签之类的工具中,用到的时候翻一下就好~
本着把自己知道的都告诉大家,如果本文对您有所帮助,点赞+关注
鼓励一下呗~