前言
目前正在出一个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%commitkbcommit与内存总量(包括 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系统处理每次请求的平均时间,不包括在请求队列中消耗的时间%utilI/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 ~]#
结束语
命令很多,大家不用去背,可以放到便签之类的工具中,用到的时候翻一下就好~
本着把自己知道的都告诉大家,如果本文对您有所帮助,点赞+关注鼓励一下呗~
Linux相关文章
- 一起来学Linux命令(一)
- 一起来学Linux命令(二)
- 一起来学Linux命令(三)
- 一起来学Linux命令(四)
- 一起来学Linux命令(五)
- 一起来学Linux命令(六)
- 一起来学Linux命令(七)
- 一起来学Linux命令(八)
往期面试题相关文章
- 查漏补缺第一期(Redis相关)
- 查漏补缺第二期(synchronized & 锁升级)
- 查漏补缺第三期(分布式事务相关)
- 查漏补缺第四期(Mysql相关)
- 查漏补缺第五期(HashMap & ConcurrentHashMap)
- 查漏补缺第六期(京东一面)
- 查漏补缺第七期(美团到店一面)
- 查漏补缺第八期(阿里一面)
- 查漏补缺第九期(阿里二面)
- 查漏补缺第十期(网易实习一面)
- 查漏补缺第十一期(网易实习二面)
- 查漏补缺第十二期(网易实习三面)
- 查漏补缺第十三期(滴滴实习一面)
- 查漏补缺第十四期(滴滴实习二面)
- 查漏补缺第十五期(华为一面)
- 查漏补缺第十六期(华为二面)
- 查漏补缺第十七期(华为三面)
- 查漏补缺第十八期(你了解class文件吗)
项目源码(源码已更新 欢迎star⭐️)
往期设计模式相关文章
- 一起来学设计模式之认识设计模式
- 一起来学设计模式之单例模式
- 一起来学设计模式之工厂模式
- 一起来学设计模式之建造者模式
- 一起来学设计模式之原型模式
- 一起来学设计模式之适配器模式
- 一起来学设计模式之桥接模式
- 一起来学设计模式之组合模式
- 一起来学设计模式之装饰器模式
- 一起来学设计模式之外观模式
- 一起来学设计模式之享元模式
- 一起来学设计模式之代理模式
- 一起来学设计模式之责任链模式
- 一起来学设计模式之命令模式
- 一起来学设计模式之解释器模式
- 一起来学设计模式之迭代器模式
- 一起来学设计模式之中介者模式
- 一起来学设计模式之备忘录模式
- 一起来学设计模式之观察者模式
- 一起来学设计模式之状态模式
- 一起来学设计模式之策略模式
- 一起来学设计模式之模板方法模式
- 一起来学设计模式之访问者模式
- 一起来学设计模式之依赖注入模式
设计模式项目源码(源码已更新 欢迎star⭐️)
Kafka 专题学习
- 一起来学kafka之Kafka集群搭建
- 一起来学kafka之整合SpringBoot基本使用
- 一起来学kafka之整合SpringBoot深入使用(一)
- 一起来学kafka之整合SpringBoot深入使用(二)
- 一起来学kafka之整合SpringBoot深入使用(三)
项目源码(源码已更新 欢迎star⭐️)
ElasticSearch 专题学习
项目源码(源码已更新 欢迎star⭐️)
往期并发编程内容推荐
- Java多线程专题之线程与进程概述
- Java多线程专题之线程类和接口入门
- Java多线程专题之进阶学习Thread(含源码分析)
- Java多线程专题之Callable、Future与FutureTask(含源码分析)
- 面试官: 有了解过线程组和线程优先级吗
- 面试官: 说一下线程的生命周期过程
- 面试官: 说一下线程间的通信
- 面试官: 说一下Java的共享内存模型
- 面试官: 有了解过指令重排吗,什么是happens-before
- 面试官: 有了解过volatile关键字吗 说说看
- 面试官: 有了解过Synchronized吗 说说看
- Java多线程专题之Lock锁的使用
- 面试官: 有了解过ReentrantLock的底层实现吗?说说看
- 面试官: 有了解过CAS和原子操作吗?说说看
- Java多线程专题之线程池的基本使用
- 面试官: 有了解过线程池的工作原理吗?说说看
- 面试官: 线程池是如何做到线程复用的?有了解过吗,说说看
- 面试官: 阻塞队列有了解过吗?说说看
- 面试官: 阻塞队列的底层实现有了解过吗? 说说看
- 面试官: 同步容器和并发容器有用过吗? 说说看
- 面试官: CopyOnWrite容器有了解过吗? 说说看
- 面试官: Semaphore在项目中有使用过吗?说说看(源码剖析)
- 面试官: Exchanger在项目中有使用过吗?说说看(源码剖析)
- 面试官: CountDownLatch有了解过吗?说说看(源码剖析)
- 面试官: CyclicBarrier有了解过吗?说说看(源码剖析)
- 面试官: Phaser有了解过吗?说说看
- 面试官: Fork/Join 有了解过吗?说说看(含源码分析)
- 面试官: Stream并行流有了解过吗?说说看