常用的Linux性能检测工具
下图是一些常用的Linux性能检测工具,通过这些工具我们可以对系统进行详细的检测。
ps
ps
命令用于查看当前系统中的进程状态。这个命令可以提供关于系统中运行的进程的详细信息,类似于Windows操作系统中的任务管理器。
ps命令的基本用法
以下是一些常用的参数及其用法:
- ps -ef:显示所有进程的信息,包括进程ID、用户ID、父进程ID、CPU使用率、启动时间、终端类型和执行的命令行。
bbq@vmd ~> ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:34 ? 00:00:00 /sbin/init
root 2 0 0 10:34 ? 00:00:00 [kthreadd]
root 3 2 0 10:34 ? 00:00:00 [rcu_gp]
root 4 2 0 10:34 ? 00:00:00 [rcu_par_gp]
root 5 2 0 10:34 ? 00:00:00 [slub_flushwq]
root 6 2 0 10:34 ? 00:00:00 [netns]
root 10 2 0 10:34 ? 00:00:00 [mm_percpu_wq]
root 11 2 0 10:34 ? 00:00:00 [rcu_tasks_kthread]
root 12 2 0 10:34 ? 00:00:00 [rcu_tasks_rude_kthread]
root 13 2 0 10:34 ? 00:00:00 [rcu_tasks_trace_kthread]
root 14 2 0 10:34 ? 00:00:00 [ksoftirqd/0]
root 15 2 0 10:34 ? 00:00:00 [rcu_preempt]
root 16 2 0 10:34 ? 00:00:00 [migration/0]
root 18 2 0 10:34 ? 00:00:00 [cpuhp/0]
root 20 2 0 10:34 ? 00:00:00 [kdevtmpfs]
root 21 2 0 10:34 ? 00:00:00 [inet_frag_wq]
root 22 2 0 10:34 ? 00:00:00 [kauditd]
root 23 2 0 10:34 ? 00:00:00 [khungtaskd]
root 24 2 0 10:34 ? 00:00:00 [oom_reaper]
root 27 2 0 10:34 ? 00:00:00 [writeback]
root 28 2 0 10:34 ? 00:00:00 [kcompactd0]
root 29 2 0 10:34 ? 00:00:00 [ksmd]
root 30 2 0 10:34 ? 00:00:00 [khugepaged]
root 31 2 0 10:34 ? 00:00:00 [kintegrityd]
root 32 2 0 10:34 ? 00:00:00 [kblockd]
root 33 2 0 10:34 ? 00:00:00 [blkcg_punt_bio]
root 34 2 0 10:34 ? 00:00:00 [tpm_dev_wq]
root 35 2 0 10:34 ? 00:00:00 [edac-poller]
root 36 2 0 10:34 ? 00:00:00 [devfreq_wq]
root 37 2 0 10:34 ? 00:00:00 [kworker/0:1H-kblockd]
root 38 2 0 10:34 ? 00:00:00 [kswapd0]
root 44 2 0 10:34 ? 00:00:00 [kthrotld]
root 46 2 0 10:34 ? 00:00:00 [acpi_thermal_pm]
root 48 2 0 10:34 ? 00:00:00 [mld]
root 49 2 0 10:34 ? 00:00:00 [ipv6_addrconf]
root 54 2 0 10:34 ? 00:00:00 [kstrp]
root 59 2 0 10:34 ? 00:00:00 [zswap-shrink]
root 60 2 0 10:34 ? 00:00:00 [kworker/u3:0]
root 119 2 0 10:34 ? 00:00:00 [hv_vmbus_con]
root 120 2 0 10:34 ? 00:00:00 [hv_vmbus_rescin]
root 121 2 0 10:34 ? 00:00:00 [hv_pri_chan]
root 122 2 0 10:34 ? 00:00:00 [hv_sub_chan]
root 124 2 0 10:34 ? 00:00:00 [ata_sff]
root 125 2 0 10:34 ? 00:00:00 [scsi_eh_0]
root 126 2 0 10:34 ? 00:00:00 [scsi_eh_1]
root 127 2 0 10:34 ? 00:00:00 [scsi_eh_2]
root 128 2 0 10:34 ? 00:00:00 [scsi_tmf_1]
root 129 2 0 10:34 ? 00:00:00 [scsi_tmf_0]
root 130 2 0 10:34 ? 00:00:00 [scsi_tmf_2]
root 131 2 0 10:34 ? 00:00:00 [scsi_eh_3]
root 132 2 0 10:34 ? 00:00:00 [scsi_tmf_3]
root 140 2 0 10:34 ? 00:00:00 [kworker/0:2H-kblockd]
root 172 2 0 10:34 ? 00:00:00 [jbd2/sda1-8]
root 173 2 0 10:34 ? 00:00:00 [ext4-rsv-conver]
root 214 1 0 10:34 ? 00:00:00 /lib/systemd/systemd-journald
root 241 1 0 10:34 ? 00:00:00 /lib/systemd/systemd-udevd
root 284 2 0 10:34 ? 00:00:00 [hv_balloon]
root 285 2 0 10:34 ? 00:00:00 [kworker/u2:6-flush-8:0]
root 304 2 0 10:34 ? 00:00:00 [cryptd]
root 310 1 0 10:34 ? 00:00:00 /usr/sbin/hv_kvp_daemon -n
root 394 1 0 10:34 ? 00:00:00 dhclient -4 -v -i -pf /run/dhclient.eth0.pid -lf /
systemd+ 462 1 0 10:34 ? 00:00:00 /lib/systemd/systemd-timesyncd
root 465 1 0 10:34 ? 00:00:00 /usr/sbin/cron -f
message+ 466 1 0 10:34 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: -
root 468 1 0 10:34 ? 00:00:00 /usr/sbin/hv_vss_daemon -n
root 470 1 0 10:34 ? 00:00:00 /lib/systemd/systemd-logind
root 472 1 0 10:34 ? 00:00:04 /usr/sbin/tailscaled --state=/var/lib/tailscale/ta
root 474 1 0 10:34 tty1 00:00:00 /bin/login -p --
root 478 1 0 10:34 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 sta
bbq 587 1 0 10:35 ? 00:00:00 /lib/systemd/systemd --user
bbq 588 587 0 10:35 ? 00:00:00 (sd-pam)
bbq 594 474 0 10:35 tty1 00:00:00 -fish
root 637 478 0 10:35 ? 00:00:00 sshd: bbq [priv]
bbq 643 637 0 10:35 ? 00:00:00 sshd: bbq@pts/0
bbq 644 643 0 10:35 pts/0 00:00:00 -fish
root 2502 2 0 11:06 ? 00:00:00 [kworker/u2:2-events_unbound]
root 2540 644 0 11:08 pts/0 00:00:00 sudo ltrace -p 475
root 2541 2540 0 11:08 pts/1 00:00:00 sudo ltrace -p 475
root 2542 2541 0 11:08 pts/1 00:00:00 ltrace -p 475
root 2548 478 0 11:14 ? 00:00:00 sshd: bbq [priv]
bbq 2554 2548 0 11:14 ? 00:00:00 sshd: bbq@pts/2
bbq 2555 2554 0 11:14 pts/2 00:00:00 -fish
root 2641 2 0 11:16 ? 00:00:01 [kworker/0:1-events_freezable_power_]
root 2698 2 0 11:26 ? 00:00:00 [kworker/0:2-events_freezable_power_]
root 2744 2 0 11:31 ? 00:00:00 [kworker/0:0-events]
bbq 2783 2555 0 11:33 pts/2 00:00:00 ps -ef
- ps aux:显示所有进程的详细状态,包括进程的拥有者、进程ID、CPU和内存使用率、虚拟内存大小、常驻集大小、终端类型、进程状态、进程启动时间、执行的时间和所执行的指令。
bbq@vmd ~> ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 1.7 102464 8144 ? Ss 10:34 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 10:34 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 10:34 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 10:34 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 10:34 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I< 10:34 0:00 [netns]
root 10 0.0 0.0 0 0 ? I< 10:34 0:00 [mm_percpu_wq]
root 11 0.0 0.0 0 0 ? I 10:34 0:00 [rcu_tasks_kthread]
root 12 0.0 0.0 0 0 ? I 10:34 0:00 [rcu_tasks_rude_kthread]
root 13 0.0 0.0 0 0 ? I 10:34 0:00 [rcu_tasks_trace_kthread]
root 14 0.0 0.0 0 0 ? S 10:34 0:00 [ksoftirqd/0]
root 15 0.0 0.0 0 0 ? I 10:34 0:00 [rcu_preempt]
root 16 0.0 0.0 0 0 ? S 10:34 0:00 [migration/0]
root 18 0.0 0.0 0 0 ? S 10:34 0:00 [cpuhp/0]
root 20 0.0 0.0 0 0 ? S 10:34 0:00 [kdevtmpfs]
root 21 0.0 0.0 0 0 ? I< 10:34 0:00 [inet_frag_wq]
root 22 0.0 0.0 0 0 ? S 10:34 0:00 [kauditd]
root 23 0.0 0.0 0 0 ? S 10:34 0:00 [khungtaskd]
root 24 0.0 0.0 0 0 ? S 10:34 0:00 [oom_reaper]
root 27 0.0 0.0 0 0 ? I< 10:34 0:00 [writeback]
root 28 0.0 0.0 0 0 ? S 10:34 0:00 [kcompactd0]
root 29 0.0 0.0 0 0 ? SN 10:34 0:00 [ksmd]
root 30 0.0 0.0 0 0 ? SN 10:34 0:00 [khugepaged]
root 31 0.0 0.0 0 0 ? I< 10:34 0:00 [kintegrityd]
root 32 0.0 0.0 0 0 ? I< 10:34 0:00 [kblockd]
root 33 0.0 0.0 0 0 ? I< 10:34 0:00 [blkcg_punt_bio]
root 34 0.0 0.0 0 0 ? I< 10:34 0:00 [tpm_dev_wq]
root 35 0.0 0.0 0 0 ? I< 10:34 0:00 [edac-poller]
root 36 0.0 0.0 0 0 ? I< 10:34 0:00 [devfreq_wq]
root 37 0.0 0.0 0 0 ? I< 10:34 0:00 [kworker/0:1H-kblockd]
root 38 0.0 0.0 0 0 ? S 10:34 0:00 [kswapd0]
root 44 0.0 0.0 0 0 ? I< 10:34 0:00 [kthrotld]
root 46 0.0 0.0 0 0 ? I< 10:34 0:00 [acpi_thermal_pm]
root 48 0.0 0.0 0 0 ? I< 10:34 0:00 [mld]
root 49 0.0 0.0 0 0 ? I< 10:34 0:00 [ipv6_addrconf]
root 54 0.0 0.0 0 0 ? I< 10:34 0:00 [kstrp]
root 59 0.0 0.0 0 0 ? I< 10:34 0:00 [zswap-shrink]
root 60 0.0 0.0 0 0 ? I< 10:34 0:00 [kworker/u3:0]
root 119 0.0 0.0 0 0 ? I< 10:34 0:00 [hv_vmbus_con]
root 120 0.0 0.0 0 0 ? I< 10:34 0:00 [hv_vmbus_rescin]
root 121 0.0 0.0 0 0 ? I< 10:34 0:00 [hv_pri_chan]
root 122 0.0 0.0 0 0 ? I< 10:34 0:00 [hv_sub_chan]
root 124 0.0 0.0 0 0 ? I< 10:34 0:00 [ata_sff]
root 125 0.0 0.0 0 0 ? S 10:34 0:00 [scsi_eh_0]
root 126 0.0 0.0 0 0 ? S 10:34 0:00 [scsi_eh_1]
root 127 0.0 0.0 0 0 ? S 10:34 0:00 [scsi_eh_2]
root 128 0.0 0.0 0 0 ? I< 10:34 0:00 [scsi_tmf_1]
root 129 0.0 0.0 0 0 ? I< 10:34 0:00 [scsi_tmf_0]
root 130 0.0 0.0 0 0 ? I< 10:34 0:00 [scsi_tmf_2]
root 131 0.0 0.0 0 0 ? S 10:34 0:00 [scsi_eh_3]
root 132 0.0 0.0 0 0 ? I< 10:34 0:00 [scsi_tmf_3]
root 140 0.0 0.0 0 0 ? I< 10:34 0:00 [kworker/0:2H-kblockd]
root 172 0.0 0.0 0 0 ? S 10:34 0:00 [jbd2/sda1-8]
root 173 0.0 0.0 0 0 ? I< 10:34 0:00 [ext4-rsv-conver]
root 214 0.0 1.7 49480 7944 ? Ss 10:34 0:00 /lib/systemd/systemd-journald
root 241 0.0 0.4 26528 2264 ? Ss 10:34 0:00 /lib/systemd/systemd-udevd
root 284 0.0 0.0 0 0 ? S 10:34 0:00 [hv_balloon]
root 285 0.0 0.0 0 0 ? I 10:34 0:00 [kworker/u2:6-events_unbound]
root 304 0.0 0.0 0 0 ? I< 10:34 0:00 [cryptd]
root 310 0.0 0.3 2984 1720 ? Ss 10:34 0:00 /usr/sbin/hv_kvp_daemon -n
root 394 0.0 0.4 5872 2020 ? Ss 10:34 0:00 dhclient -4 -v -i -pf /run/dhclient
systemd+ 462 0.0 0.5 90092 2636 ? Ssl 10:34 0:00 /lib/systemd/systemd-timesyncd
root 465 0.0 0.5 6820 2456 ? Ss 10:34 0:00 /usr/sbin/cron -f
message+ 466 0.0 0.7 9148 3344 ? Ss 10:34 0:00 /usr/bin/dbus-daemon --system --add
root 468 0.0 0.1 2464 844 ? Ss 10:34 0:00 /usr/sbin/hv_vss_daemon -n
root 470 0.0 0.9 17204 4320 ? Ss 10:34 0:00 /lib/systemd/systemd-logind
root 472 0.1 15.5 1319768 70844 ? Ssl 10:34 0:04 /usr/sbin/tailscaled --state=/var/l
root 474 0.0 0.5 6128 2392 tty1 Ss 10:34 0:00 /bin/login -p --
root 478 0.0 0.9 15440 4340 ? Ss 10:34 0:00 sshd: /usr/sbin/sshd -D [listener]
bbq 587 0.0 0.9 18924 4324 ? Ss 10:35 0:00 /lib/systemd/systemd --user
bbq 588 0.0 0.2 103180 972 ? S 10:35 0:00 (sd-pam)
bbq 594 0.0 1.3 176756 6340 tty1 S+ 10:35 0:00 -fish
root 637 0.0 0.9 17832 4260 ? Ss 10:35 0:00 sshd: bbq [priv]
bbq 643 0.0 0.6 17992 2812 ? S 10:35 0:00 sshd: bbq@pts/0
bbq 644 0.0 1.9 244504 9044 pts/0 Ss 10:35 0:00 -fish
root 2502 0.0 0.0 0 0 ? I 11:06 0:00 [kworker/u2:2-flush-8:0]
root 2540 0.0 1.0 10284 4660 pts/0 S+ 11:08 0:00 sudo ltrace -p 475
root 2541 0.0 0.1 10284 480 pts/1 Ss 11:08 0:00 sudo ltrace -p 475
root 2542 0.0 0.5 4032 2400 pts/1 S+ 11:08 0:00 ltrace -p 475
root 2548 0.0 2.3 17832 10884 ? Ss 11:14 0:00 sshd: bbq [priv]
bbq 2554 0.0 1.4 17992 6808 ? S 11:14 0:00 sshd: bbq@pts/2
bbq 2555 0.0 2.2 242556 10408 pts/2 Ssl 11:14 0:00 -fish
root 2641 0.1 0.0 0 0 ? I 11:16 0:01 [kworker/0:1-ata_sff]
root 2698 0.1 0.0 0 0 ? I 11:26 0:00 [kworker/0:2-events_freezable_power
root 2744 0.0 0.0 0 0 ? I 11:31 0:00 [kworker/0:0-events]
bbq 2797 0.0 0.9 11340 4324 pts/2 R+ 11:33 0:00 ps aux
- ps -A:列出系统中的所有进程。
bbq@vmd ~> ps -A
PID TTY TIME CMD
1 ? 00:00:00 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
5 ? 00:00:00 slub_flushwq
6 ? 00:00:00 netns
10 ? 00:00:00 mm_percpu_wq
11 ? 00:00:00 rcu_tasks_kthread
12 ? 00:00:00 rcu_tasks_rude_kthread
13 ? 00:00:00 rcu_tasks_trace_kthread
14 ? 00:00:00 ksoftirqd/0
15 ? 00:00:00 rcu_preempt
16 ? 00:00:00 migration/0
18 ? 00:00:00 cpuhp/0
20 ? 00:00:00 kdevtmpfs
21 ? 00:00:00 inet_frag_wq
22 ? 00:00:00 kauditd
23 ? 00:00:00 khungtaskd
24 ? 00:00:00 oom_reaper
27 ? 00:00:00 writeback
28 ? 00:00:00 kcompactd0
29 ? 00:00:00 ksmd
30 ? 00:00:00 khugepaged
31 ? 00:00:00 kintegrityd
32 ? 00:00:00 kblockd
33 ? 00:00:00 blkcg_punt_bio
34 ? 00:00:00 tpm_dev_wq
35 ? 00:00:00 edac-poller
36 ? 00:00:00 devfreq_wq
37 ? 00:00:00 kworker/0:1H-kblockd
38 ? 00:00:00 kswapd0
44 ? 00:00:00 kthrotld
46 ? 00:00:00 acpi_thermal_pm
48 ? 00:00:00 mld
49 ? 00:00:00 ipv6_addrconf
54 ? 00:00:00 kstrp
59 ? 00:00:00 zswap-shrink
60 ? 00:00:00 kworker/u3:0
119 ? 00:00:00 hv_vmbus_con
120 ? 00:00:00 hv_vmbus_rescin
121 ? 00:00:00 hv_pri_chan
122 ? 00:00:00 hv_sub_chan
124 ? 00:00:00 ata_sff
125 ? 00:00:00 scsi_eh_0
126 ? 00:00:00 scsi_eh_1
127 ? 00:00:00 scsi_eh_2
128 ? 00:00:00 scsi_tmf_1
129 ? 00:00:00 scsi_tmf_0
130 ? 00:00:00 scsi_tmf_2
131 ? 00:00:00 scsi_eh_3
132 ? 00:00:00 scsi_tmf_3
140 ? 00:00:00 kworker/0:2H-kblockd
172 ? 00:00:00 jbd2/sda1-8
173 ? 00:00:00 ext4-rsv-conver
214 ? 00:00:00 systemd-journal
241 ? 00:00:00 systemd-udevd
284 ? 00:00:00 hv_balloon
285 ? 00:00:00 kworker/u2:6-ext4-rsv-conversion
304 ? 00:00:00 cryptd
310 ? 00:00:00 hv_kvp_daemon
394 ? 00:00:00 dhclient
462 ? 00:00:00 systemd-timesyn
465 ? 00:00:00 cron
466 ? 00:00:00 dbus-daemon
468 ? 00:00:00 hv_vss_daemon
470 ? 00:00:00 systemd-logind
472 ? 00:00:05 tailscaled
474 tty1 00:00:00 login
478 ? 00:00:00 sshd
587 ? 00:00:00 systemd
588 ? 00:00:00 (sd-pam)
594 tty1 00:00:00 fish
637 ? 00:00:00 sshd
643 ? 00:00:00 sshd
644 pts/0 00:00:00 fish
2502 ? 00:00:00 kworker/u2:2-events_unbound
2540 pts/0 00:00:00 sudo
2541 pts/1 00:00:00 sudo
2542 pts/1 00:00:00 ltrace
2548 ? 00:00:00 sshd
2554 ? 00:00:00 sshd
2555 pts/2 00:00:00 fish
2641 ? 00:00:01 kworker/0:1-ata_sff
2698 ? 00:00:00 kworker/0:2-events_freezable_power_
2744 ? 00:00:00 kworker/0:0-events
2811 pts/2 00:00:00 ps
- ps -a:显示所有终端下执行的程序。
bbq@vmd ~> ps -a
PID TTY TIME CMD
594 tty1 00:00:00 fish
2540 pts/0 00:00:00 sudo
2542 pts/1 00:00:00 ltrace
2824 pts/2 00:00:00 ps
ps命令的输出解释
ps命令的输出包含了多个列,每个列都有其特定的含义。例如:
- USER:进程的拥有者,通常是运行该进程的用户账户的名称。
- PID:进程ID,用于唯一标识一个进程。
- %CPU:进程占用的CPU使用率百分比。
- %MEM:进程占用的物理内存使用率百分比。
- VSZ:虚拟内存大小,单位是KB。
- RSS:常驻集大小,单位是KB,表示进程在物理内存中占用的固定大小。
- TTY:终端类型,如果进程没有与任何终端关联,则显示为“?”。
- STAT:进程状态,描述了进程的当前状态,如运行中、休眠等。
- START:进程启动的时间。
- TIME:进程实际使用CPU的时间,单位是小时:分钟:秒。
- COMMAND:启动进程的命令名称或命令行。
ps命令的高级用法
ps命令还支持许多高级选项,可以用来定制输出或按特定条件筛选进程。例如:
- ps -u <用户名>:显示指定用户的进程。
bbq@vmd ~> ps -u bbq
PID TTY TIME CMD
587 ? 00:00:00 systemd
588 ? 00:00:00 (sd-pam)
594 tty1 00:00:00 fish
2554 ? 00:00:00 sshd
2555 pts/2 00:00:00 fish
2869 pts/2 00:00:00 ps
- ps -ef | grep <模式>:使用grep命令过滤特定模式的进程。
- ps aux –sort=-%cpu:按CPU使用率降序显示进程。
- ps -o pid,tty,cmd:自定义输出格式,只显示进程ID、终端类型和执行的命令行。
ps命令的注意事项
在使用ps命令时,需要注意其输出风格的不同。例如,ps aux是BSD风格,可能会截断command列,而ps -ef是System V风格,不会截断command列。这种区别在结合grep命令过滤进程时可能会影响到结果。
top
top
命令可以动态地持续监听进程地运行状态,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。
top
命令的基本格式如下:
top [选项]
top
选项:
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
- -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
- -n 次数:指定 top 命令执行的次数。一般和"-“选项合用;
- -p 进程PID:仅查看指定 ID 的进程;
- -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
- -u 用户名:只监听某个用户的进程;
在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:
- ? 或 h:显示交互模式的帮助;
- P:按照 CPU 的使用率排序,默认就是此选项;
- M:按照内存的使用率排序;
- N:按照 PID 排序;
- T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
- k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
- r:按照 PID 给某个进程重设优先级(Nice)值;
- q:退出 top 命令;
ss
ss
是Socket Statistics的缩写,用于显示系统中套接字的统计信息。它是netstat
的高效替代工具,能够提供更详细的 TCP、UDP、UNIX 套接字信息,并且速度更快。ss 的高效性得益于其利用了 Linux 内核中的 tcp_diag 模块。
ss
命令的基本语法为:
ss [OPTIONS] [FILTER]
常用选项包括:
- -a:显示所有套接字,包括监听和非监听的。
- -t:仅显示 TCP 套接字。
- -u:仅显示 UDP 套接字。
- -l:仅显示监听状态的套接字。
- -p:显示与套接字关联的进程信息。
- -n:以数字形式显示地址,不解析主机名。
- -s:显示套接字的摘要信息。
- -4:仅显示 IPv4 套接字。
- -6:仅显示 IPv6 套接字。
- -o:显示 TCP 计时器信息。
bbq@vmd ~> ss -l4
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:41641 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
tcp LISTEN 0 4096 100.71.18.77:36777 0.0.0.0:*
mptcp LISTEN 0 4096 100.71.18.77:36777 0.0.0.0:*
ltrace
Linux ltrace 是一种 Linux 应用程序调试工具,它可以跟踪应用程序的动态库调用和系统调用。Linux ltrace 工具可以在应用程序启动时启动,并记录应用程序调用的所有动态库函数和系统调用。这些记录可以帮助开发人员跟踪和分析应用程序的执行过程,识别 Bug 和性能瓶颈,并进行必要的优化和调整。
ltrace
命令的基本语法:
ltrace [options] [command]
- -c 统计每个库调用的次数和时间
- -f 跟踪由fork调用产生的所有子进程
- -e expr 只跟踪匹配表达式expr的库调用
- -o file 把跟踪输出保存到文件file
- -p PID 跟踪指定进程ID的调用
- -l library 只跟踪特定库的调用
- -S 跟踪系统调用而非库调用
- -n 忽略对某些符号的跟踪
以hello.c
程序为例,代码如下:
#include <stdio.h>
int main ()
{
printf("Hello world!\n");
return 0;
}
bbq@vmd ~> gcc hello.c -o hello
#### 跟踪程序调用的库
bbq@vmd ~> ltrace ./hello
puts("Hello world!"Hello world!
) = 13
+++ exited (status 0) +++
#### 库调用频率
bbq@vmd ~> ltrace -c ./hello
Hello world!
% time seconds usecs/call calls function
------ ----------- ----------- --------- --------------------
100.00 0.000332 332 1 puts
------ ----------- ----------- --------- --------------------
100.00 0.000332 1 total
#### 跟踪系统调用
bbq@vmd ~> ltrace -S ./hello
SYS_brk(0) = 0x563354593000
SYS_mmap(0, 8192, 3, 34) = 0x7f14293dc000
SYS_access("/etc/ld.so.preload", 04) = -2
SYS_openat(0xffffff9c, 0x7f14294070b1, 0x80000, 0) = 3
SYS_newfstatat(3, 0x7f1429407c99, 0x7fff9b46e4c0, 4096) = 0
SYS_mmap(0, 0x4c33, 1, 2) = 0x7f14293d7000
SYS_close(3) = 0
SYS_openat(0xffffff9c, 0x7f14293dc140, 0x80000, 0) = 3
SYS_read(3, "\177ELF\002\001\001\003", 832) = 832
SYS_pread(3, 0x7fff9b46e240, 784, 64) = 784
SYS_newfstatat(3, 0x7f1429407c99, 0x7fff9b46e4c0, 4096) = 0
SYS_pread(3, 0x7fff9b46e110, 784, 64) = 784
SYS_mmap(0, 0x1e0f50, 1, 2050) = 0x7f14291f6000
SYS_mmap(0x7f142921c000, 0x155000, 5, 2066) = 0x7f142921c000
SYS_mmap(0x7f1429371000, 0x53000, 1, 2066) = 0x7f1429371000
SYS_mmap(0x7f14293c4000, 0x6000, 3, 2066) = 0x7f14293c4000
SYS_mmap(0x7f14293ca000, 0xcf50, 3, 50) = 0x7f14293ca000
SYS_close(3) = 0
SYS_mmap(0, 0x3000, 3, 34) = 0x7f14291f3000
SYS_arch_prctl(4098, 0x7f14291f3740, 0, 34) = 0
SYS_set_tid_address(0x7f14291f3a10, 0x7f14291f3740, 0x7f14294120d8, 34) = 2639
SYS_set_robust_list(0x7f14291f3a20, 24, 0x7f14294120d8, 34) = 0
SYS_334(0x7f14291f4060, 32, 0, 0x53053053) = 0
SYS_mprotect(0x7f14293c4000, 16384, 1) = 0
SYS_mprotect(0x56332a96b000, 4096, 1) = 0
SYS_mprotect(0x7f142940f000, 8192, 1) = 0
SYS_prlimit64(0, 3, 0, 0x7fff9b46f000) = 0
SYS_munmap(0x7f14293d7000, 19507) = 0
puts("Hello world!" <unfinished ...>
SYS_newfstatat(1, 0x7f142938bdd5, 0x7fff9b46f150, 4096) = 0
SYS_318(0x7f14293cf478, 8, 1, 4096) = 8
SYS_brk(0) = 0x563354593000
SYS_brk(0x5633545b4000) = 0x5633545b4000
SYS_write(1, "Hello world!\n", 13Hello world!
) = 13
<... puts resumed> ) = 13
SYS_exit_group(0 <no return ...>
+++ exited (status 0) +++
starce
strace
用于跟踪进程执行时的系统调用和信号。它能详细记录进程对系统调用的使用情况,包括参数、返回值、时间消耗等。strace
底层使用内核的ptrace
特性来实现其功能。
strace
的基本用法:
strace COMMAND
strace
常用选项
- -c:统计每个系统调用的执行时间、次数和出错次数。
- -f:跟踪由 fork 调用所产生的子进程。
- -o filename:将 strace 的输出写入文件 filename。
- -p pid:跟踪指定的进程 pid。
- -t:在输出中的每一行前加上时间信息。
- -e trace=xxx:只跟踪指定的系统调用,例如 -e trace=open 只跟踪open调用。
#### 跟踪 cat /etc/passwd 命令中的 open 系统调用
bbq@vmd ~> strace -e trace=open cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:100:107::/nonexistent:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
bbq:x:1000:1000:bbq,,,:/home/bbq:/usr/bin/fish
+++ exited with 0 +++
#### 显示时间戳
bbq@vmd ~> strace -tt ls /usr/local/bin/
11:47:25.394035 execve("/usr/bin/ls", ["ls", "/usr/local/bin/"], 0x7fffd07a5120 /* 20 vars */) = 0
11:47:25.394476 brk(NULL) = 0x55e38716e000
11:47:25.394664 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe1a9cfd000
11:47:25.394771 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (没有那个文件或目录)
11:47:25.395324 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
11:47:25.395692 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=19775, ...}, AT_EMPTY_PATH) = 0
11:47:25.396001 mmap(NULL, 19775, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe1a9cf8000
11:47:25.396271 close(3) = 0
11:47:25.396421 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
11:47:25.396642 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
11:47:25.396842 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=174312, ...}, AT_EMPTY_PATH) = 0
11:47:25.397101 mmap(NULL, 186064, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe1a9cca000
11:47:25.397232 mmap(0x7fe1a9cd1000, 110592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fe1a9cd1000
11:47:25.397417 mmap(0x7fe1a9cec000, 32768, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7fe1a9cec000
11:47:25.397609 mmap(0x7fe1a9cf4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29000) = 0x7fe1a9cf4000
11:47:25.397756 mmap(0x7fe1a9cf6000, 5840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe1a9cf6000
11:47:25.397969 close(3) = 0
11:47:25.398128 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
11:47:25.398265 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20t\2\0\0\0\0\0"..., 832) = 832
11:47:25.398408 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
11:47:25.398515 newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1922136, ...}, AT_EMPTY_PATH) = 0
11:47:25.398676 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
11:47:25.398801 mmap(NULL, 1970000, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe1a9ae9000
11:47:25.399029 mmap(0x7fe1a9b0f000, 1396736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7fe1a9b0f000
11:47:25.399228 mmap(0x7fe1a9c64000, 339968, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17b000) = 0x7fe1a9c64000
11:47:25.399433 mmap(0x7fe1a9cb7000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ce000) = 0x7fe1a9cb7000
11:47:25.399618 mmap(0x7fe1a9cbd000, 53072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe1a9cbd000
11:47:25.399989 close(3) = 0
11:47:25.400142 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpcre2-8.so.0", O_RDONLY|O_CLOEXEC) = 3
11:47:25.400307 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
11:47:25.400447 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=629384, ...}, AT_EMPTY_PATH) = 0
11:47:25.400645 mmap(NULL, 627592, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe1a9a4f000
11:47:25.400809 mmap(0x7fe1a9a51000, 438272, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fe1a9a51000
11:47:25.401044 mmap(0x7fe1a9abc000, 176128, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6d000) = 0x7fe1a9abc000
11:47:25.401280 mmap(0x7fe1a9ae7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x98000) = 0x7fe1a9ae7000
11:47:25.401497 close(3) = 0
11:47:25.401672 mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe1a9a4c000
11:47:25.401916 arch_prctl(ARCH_SET_FS, 0x7fe1a9a4c800) = 0
11:47:25.402079 set_tid_address(0x7fe1a9a4cad0) = 3658
11:47:25.402248 set_robust_list(0x7fe1a9a4cae0, 24) = 0
11:47:25.402383 rseq(0x7fe1a9a4d120, 0x20, 0, 0x53053053) = 0
11:47:25.402628 mprotect(0x7fe1a9cb7000, 16384, PROT_READ) = 0
11:47:25.402768 mprotect(0x7fe1a9ae7000, 4096, PROT_READ) = 0
11:47:25.405502 mprotect(0x7fe1a9cf4000, 4096, PROT_READ) = 0
11:47:25.406162 mprotect(0x55e35156f000, 4096, PROT_READ) = 0
11:47:25.406451 mprotect(0x7fe1a9d30000, 8192, PROT_READ) = 0
11:47:25.406921 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
11:47:25.407141 munmap(0x7fe1a9cf8000, 19775) = 0
11:47:25.407681 statfs("/sys/fs/selinux", 0x7ffdadf6e8f0) = -1 ENOENT (没有那个文件或目录)
11:47:25.408380 statfs("/selinux", 0x7ffdadf6e8f0) = -1 ENOENT (没有那个文件或目录)
11:47:25.409183 getrandom("\x64\xe9\x3f\x61\xd7\xee\xe8\x27", 8, GRND_NONBLOCK) = 8
11:47:25.409404 brk(NULL) = 0x55e38716e000
11:47:25.409533 brk(0x55e38718f000) = 0x55e38718f000
11:47:25.409779 openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3
11:47:25.410114 newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
11:47:25.410296 read(3, "nodev\tsysfs\nnodev\ttmpfs\nnodev\tbd"..., 1024) = 347
11:47:25.410510 read(3, "", 1024) = 0
11:47:25.410714 close(3) = 0
11:47:25.410943 access("/etc/selinux/config", F_OK) = -1 ENOENT (没有那个文件或目录)
11:47:25.411219 openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
11:47:25.411414 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=3264112, ...}, AT_EMPTY_PATH) = 0
11:47:25.411608 mmap(NULL, 3264112, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe1a9600000
11:47:25.411737 close(3) = 0
11:47:25.411999 ioctl(1, TCGETS, {c_iflag=ICRNL|IXANY|IMAXBEL|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
11:47:25.412189 ioctl(1, TIOCGWINSZ, {ws_row=31, ws_col=102, ws_xpixel=1326, ws_ypixel=713}) = 0
11:47:25.412388 statx(AT_FDCWD, "/usr/local/bin/", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_MODE, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
11:47:25.412561 openat(AT_FDCWD, "/usr/local/bin/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
11:47:25.412708 newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
11:47:25.412896 getdents64(3, 0x55e387174d30 /* 3 entries */, 32768) = 72
11:47:25.413093 getdents64(3, 0x55e387174d30 /* 0 entries */, 32768) = 0
11:47:25.413285 close(3) = 0
11:47:25.413472 newfstatat(1, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x2), ...}, AT_EMPTY_PATH) = 0
11:47:25.413649 write(1, "hugo\n", 5hugo
) = 5
11:47:25.413758 close(1) = 0
11:47:25.414039 close(2) = 0
11:47:25.414256 exit_group(0) = ?
11:47:25.414735 +++ exited with 0 +++
vmstat
vmstat
(Virtual Memory Statistics)是一个用于监控Linux系统性能的命令行工具。它可以实时显示系统的虚拟内存、进程、CPU活动等信息,帮助系统管理员了解系统的整体运行状况。
vmstat命令的基本语法为:
vmstat [options] [interval] [count]
- options:可选参数,用于指定显示的内容。
- interval:监测时间间隔(单位为秒)。
- count:监测次数。
vmstat
常用选项
- -a:显示活动和非活动的虚拟内存。
bbq@vmd ~> vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b 交换 空闲 不活动 活动 si so bi bo in cs us sy id wa st
1 0 31372 81720 128780 78948 2 16 96 130 1 117 0 0 99 0 0
- -d:显示每个磁盘的统计信息。
bbq@vmd ~> vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
总用量 merged 扇区 ms 总用量 merged 扇区 ms cur sec
fd0 0 0 0 0 0 0 0 0 0 0
sda 18767 7555 1291022 13296 15457 42570 1756240 55971 0 26
sr0 0 0 0 0 0 0 0 0 0 0
loop0 0 0 0 0 0 0 0 0 0 0
loop1 0 0 0 0 0 0 0 0 0 0
loop2 0 0 0 0 0 0 0 0 0 0
loop3 0 0 0 0 0 0 0 0 0 0
loop4 0 0 0 0 0 0 0 0 0 0
loop5 0 0 0 0 0 0 0 0 0 0
loop6 0 0 0 0 0 0 0 0 0 0
loop7 0 0 0 0 0 0 0 0 0 0
- -m:显示内存使用情况的统计信息。
root@aly ~# vmstat -m
Cache Num Total Size Pages
Acpi-Operand 561 896 72 56
Acpi-State 306 306 80 51
anon_vma 1373 1443 104 39
anon_vma_chain 2283 2752 64 64
bdev_cache 40 40 1600 20
bio-128 189 189 192 21
bio-192 128 128 256 16
bio-256 36 36 320 12
biovec-128 32 32 2048 16
biovec-64 32 32 1024 16
biovec-max 82 104 4096 8
buffer_head 110038 110058 104 39
cred_jar 198 336 192 21
dax_cache 19 19 832 19
dentry 45843 45843 192 21
dmaengine-unmap-128 15 15 1088 15
dmaengine-unmap-256 15 15 2112 15
dma-kmalloc-128 0 0 128 32
dma-kmalloc-16 0 0 16 256
dma-kmalloc-192 0 0 192 21
dma-kmalloc-1k 0 0 1024 16
dma-kmalloc-256 0 0 256 16
dma-kmalloc-2k 0 0 2048 16
dma-kmalloc-32 0 0 32 128
dma-kmalloc-4k 0 0 4096 8
dma-kmalloc-512 0 0 512 16
dma-kmalloc-64 0 0 64 64
dma-kmalloc-8 0 0 8 512
Cache Num Total Size Pages
dma-kmalloc-8k 0 0 8192 4
dma-kmalloc-96 0 0 96 42
dm_uevent 0 0 2888 11
dnotify_struct 0 0 32 128
dquot 144 144 256 16
ep_head 512 512 16 256
ext4_allocation_context 60 60 136 30
ext4_extent_status 9583 9588 40 102
ext4_fc_dentry_update 0 0 96 42
ext4_groupinfo_4k 418 418 184 22
ext4_inode_cache 15093 15093 1192 13
ext4_io_end 128 128 64 64
ext4_system_zone 102 102 40 102
fat_cache 0 0 40 102
fat_inode_cache 20 20 792 20
file_lock_cache 36 36 216 18
files_cache 92 92 704 23
filp 950 1360 256 16
fscrypt_info 0 0 128 32
fsverity_info 0 0 256 16
ftrace_event_field 5329 5329 56 73
fuse_inode 0 0 832 19
fuse_request 0 0 152 26
hugetlbfs_inode_cache 12 12 664 12
iint_cache 0 0 128 32
inode_cache 19332 19332 640 12
ip4-frags 0 0 200 20
ip6-frags 0 0 184 22
Cache Num Total Size Pages
ip_fib_alias 146 146 56 73
ip_fib_trie 170 170 48 85
jbd2_journal_handle 146 146 56 73
jbd2_journal_head 136 272 120 34
jbd2_revoke_record_s 256 256 32 128
jbd2_revoke_table_s 256 256 16 256
kcopyd_job 0 0 3240 10
kernfs_iattrs_cache 677 736 88 46
kernfs_node_cache 24064 24064 128 32
khugepaged_mm_slot 72 72 112 36
kioctx 0 0 576 14
kmalloc-128 2384 2400 128 32
kmalloc-16 7909 7936 16 256
kmalloc-192 2688 2688 192 21
kmalloc-1k 2060 2064 1024 16
kmalloc-256 1269 1312 256 16
kmalloc-2k 1766 1808 2048 16
kmalloc-32 6244 6400 32 128
kmalloc-4k 1597 1600 4096 8
kmalloc-512 3600 3600 512 16
kmalloc-64 7968 8192 64 64
kmalloc-8 5075 5120 8 512
kmalloc-8k 71 88 8192 4
kmalloc-96 1668 2100 96 42
kmalloc-cg-128 96 96 128 32
kmalloc-cg-16 512 512 16 256
kmalloc-cg-192 105 105 192 21
kmalloc-cg-1k 121 176 1024 16
Cache Num Total Size Pages
kmalloc-cg-256 48 48 256 16
kmalloc-cg-2k 256 288 2048 16
kmalloc-cg-32 256 256 32 128
kmalloc-cg-4k 33 48 4096 8
kmalloc-cg-512 128 128 512 16
kmalloc-cg-64 128 128 64 64
kmalloc-cg-8 1024 1024 8 512
kmalloc-cg-8k 4 4 8192 4
kmalloc-cg-96 84 84 96 42
kmalloc-rcl-128 192 192 128 32
kmalloc-rcl-16 0 0 16 256
kmalloc-rcl-192 0 0 192 21
kmalloc-rcl-1k 0 0 1024 16
kmalloc-rcl-256 0 0 256 16
kmalloc-rcl-2k 0 0 2048 16
kmalloc-rcl-32 0 0 32 128
kmalloc-rcl-4k 0 0 4096 8
kmalloc-rcl-512 0 0 512 16
kmalloc-rcl-64 960 960 64 64
kmalloc-rcl-8 0 0 8 512
kmalloc-rcl-8k 0 0 8192 4
kmalloc-rcl-96 294 294 96 42
kmem_cache 192 192 256 16
kmem_cache_node 192 192 64 64
lsm_file_cache 1215 1360 24 170
lsm_inode_cache 37838 37888 32 128
maple_node 604 864 256 16
mm_struct 60 98 1152 14
Cache Num Total Size Pages
mnt_cache 478 504 320 12
MPTCP 0 0 1920 17
MPTCPv6 0 0 2112 15
mqueue_inode_cache 17 17 960 17
names_cache 40 40 4096 8
net_namespace 14 14 4480 7
nf_conntrack 144 208 256 16
nsproxy 112 112 72 56
numa_policy 15 15 272 15
ovl_inode 44 44 728 22
pde_opener 204 204 40 102
perf_event 26 26 1248 13
pid 456 608 128 32
pid_namespace 0 0 136 30
PING 16 16 1024 16
PINGv6 13 13 1216 13
proc_dir_entry 525 525 192 21
proc_inode_cache 2170 2185 712 23
radix_tree_node 6956 6986 584 14
RAW 16 16 1024 16
RAWv6 26 26 1216 13
request_queue 17 17 936 17
request_queue_srcu 0 0 1328 12
request_sock_subflow_v4 0 0 384 21
request_sock_subflow_v6 0 0 384 21
request_sock_TCP 26 26 312 13
request_sock_TCPv6 0 0 312 13
scsi_sense_cache 64 64 128 32
Cache Num Total Size Pages
seq_file 68 68 120 34
shared_policy_node 595 595 48 85
shmem_inode_cache 1050 1080 784 20
sighand_cache 141 165 2112 15
signal_cache 140 196 1152 14
sigqueue 255 255 80 51
skbuff_ext_cache 63 63 192 21
skbuff_fclone_cache 50 112 512 16
skbuff_head_cache 144 144 256 16
sock_inode_cache 240 247 832 19
task_group 84 84 640 12
taskstats 38 38 416 19
task_struct 188 196 8128 4
TCP 28 28 2304 14
TCPv6 26 26 2432 13
trace_event_file 1806 1806 96 42
tw_sock_TCP 30 90 272 15
tw_sock_TCPv6 15 15 272 15
UDPv6 24 24 1344 12
UNIX 150 150 1088 15
userfaultfd_ctx_cache 0 0 192 21
user_namespace 0 0 624 13
uts_namespace 36 36 432 18
vmap_area 2016 6016 64 64
vm_area_struct 3466 3484 152 26
xfrm_dst_cache 0 0 320 12
xfrm_state 0 0 768 21
- -s:显示交换空间统计信息。
root@aly ~# vmstat -s
3648056 K total memory
460812 K used memory
563640 K active memory
452140 K inactive memory
2458904 K free memory
150796 K buffer memory
811856 K swap cache
0 K total swap
0 K used swap
0 K free swap
606193 non-nice user cpu ticks
125 nice user cpu ticks
286752 system cpu ticks
207604164 idle cpu ticks
8236 IO-wait cpu ticks
0 IRQ cpu ticks
33380 softirq cpu ticks
0 stolen cpu ticks
0 non-nice guest cpu ticks
0 nice guest cpu ticks
624433 K paged in
2806553 K paged out
0 pages swapped in
0 pages swapped out
984021844 interrupts
1892748780 CPU context switches
1751594227 boot time
34743 forks
netstat
netstat
是一个强大的命令行工具,用于显示网络连接、路由表、接口统计信息、伪装连接以及多播成员等。
#### 列出所有当前的连接,包括 TCP、UDP 和 UNIX 套接字。
root@aly ~# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 aly:51432 100.100.0.70:http TIME_WAIT
tcp 0 352 aly:ssh 113.133.98.9:15292 ESTABLISHED
tcp 0 0 aly:51814 100.100.30.26:http ESTABLISHED
tcp 0 0 aly:34482 100.100.0.70:https TIME_WAIT
tcp 0 0 aly:ssh 113.133.98.9:15175 ESTABLISHED
tcp6 0 0 [::]:5355 [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
udp 0 0 0.0.0.0:5355 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 aly:bootpc 0.0.0.0:*
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 [::]:5355 [::]:*
udp6 0 0 localhost:323 [::]:*
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 18045 /run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 17930 /run/dbus/system_bus_socket
unix 3 [ ] DGRAM CONNECTED 14835
unix 3 [ ] STREAM CONNECTED 230876
unix 3 [ ] STREAM CONNECTED 15689
unix 2 [ ] DGRAM CONNECTED 76244
unix 2 [ ] DGRAM 33220 /run/user/0/systemd/notify
unix 3 [ ] STREAM CONNECTED 18032
unix 2 [ ACC ] STREAM LISTENING 33223 /run/user/0/systemd/private
unix 2 [ ACC ] STREAM LISTENING 33231 /run/user/0/bus
unix 2 [ ACC ] STREAM LISTENING 18811 /var/run/docker/libnetwork/17ad54cb5ae3.sock
unix 2 [ ACC ] STREAM LISTENING 33233 /run/user/0/gnupg/S.dirmngr
unix 2 [ ACC ] STREAM LISTENING 33235 /run/user/0/gnupg/S.gpg-agent.browser
unix 2 [ ACC ] STREAM LISTENING 33237 /run/user/0/gnupg/S.gpg-agent.extra
unix 2 [ ACC ] STREAM LISTENING 33239 /run/user/0/gnupg/S.gpg-agent.ssh
unix 2 [ ACC ] STREAM LISTENING 33241 /run/user/0/gnupg/S.gpg-agent
unix 2 [ ACC ] STREAM LISTENING 230116 /tmp/aliyun_assist_service.sock
unix 2 [ ACC ] STREAM LISTENING 33243 /run/user/0/pk-debconf-socket
unix 3 [ ] STREAM CONNECTED 15693 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 182361
unix 2 [ ACC ] STREAM LISTENING 15153 /run/systemd/resolve/io.systemd.Resolve
unix 2 [ ACC ] STREAM LISTENING 15154 /run/systemd/resolve/io.systemd.Resolve.Monitor
unix 3 [ ] SEQPACKET CONNECTED 18074
unix 3 [ ] STREAM CONNECTED 15747 /run/systemd/journal/stdout
unix 3 [ ] DGRAM CONNECTED 15610
unix 2 [ ] DGRAM CONNECTED 32641
unix 3 [ ] STREAM CONNECTED 230875
unix 2 [ ] DGRAM CONNECTED 15130
unix 3 [ ] DGRAM CONNECTED 14290
unix 2 [ ] DGRAM CONNECTED 15383
unix 2 [ ACC ] STREAM LISTENING 36720 /run/screen/S-root/3899.pts-0.aly
unix 3 [ ] STREAM CONNECTED 16094 /run/containerd/containerd.sock
unix 2 [ ] DGRAM CONNECTED 32652
unix 3 [ ] DGRAM CONNECTED 14289 /run/systemd/notify
unix 2 [ ACC ] STREAM LISTENING 14292 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 14294 /run/systemd/userdb/io.systemd.DynamicUser
unix 3 [ ] STREAM CONNECTED 15466 /run/systemd/journal/stdout
unix 2 [ ACC ] STREAM LISTENING 14295 /run/systemd/io.system.ManagedOOM
unix 3 [ ] STREAM CONNECTED 230076 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 14306 /run/systemd/fsck.progress
unix 9 [ ] DGRAM CONNECTED 14310 /run/systemd/journal/dev-log
unix 8 [ ] DGRAM CONNECTED 14312 /run/systemd/journal/socket
unix 2 [ ACC ] STREAM LISTENING 14314 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 76831 /run/dbus/system_bus_socket
unix 3 [ ] DGRAM CONNECTED 15612
unix 2 [ ACC ] SEQPACKET LISTENING 14317 /run/udev/control
unix 3 [ ] STREAM CONNECTED 14822
unix 2 [ ] DGRAM CONNECTED 15299
unix 3 [ ] STREAM CONNECTED 182094
unix 3 [ ] STREAM CONNECTED 17714
unix 3 [ ] SEQPACKET CONNECTED 18075
unix 3 [ ] STREAM CONNECTED 17924
unix 2 [ ] DGRAM CONNECTED 380658
unix 2 [ ACC ] STREAM LISTENING 14401 /run/systemd/journal/io.systemd.journal
unix 3 [ ] STREAM CONNECTED 230086 /run/systemd/journal/stdout
unix 3 [ ] DGRAM CONNECTED 14836
unix 3 [ ] STREAM CONNECTED 182353 /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 3 [ ] STREAM CONNECTED 17931 /run/dbus/system_bus_socket
unix 2 [ ] DGRAM CONNECTED 15692
unix 3 [ ] STREAM CONNECTED 230874
unix 3 [ ] STREAM CONNECTED 32695 /run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 15966
unix 3 [ ] STREAM CONNECTED 182096
unix 3 [ ] DGRAM CONNECTED 15611
unix 3 [ ] STREAM CONNECTED 17928
unix 3 [ ] STREAM CONNECTED 15810 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 16097 /run/containerd/containerd.sock
unix 2 [ ACC ] STREAM LISTENING 17689 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 17692 /run/docker.sock
unix 3 [ ] STREAM CONNECTED 182095
unix 3 [ ] STREAM CONNECTED 230868
unix 2 [ ] DGRAM CONNECTED 14403
unix 3 [ ] STREAM CONNECTED 15671
unix 2 [ ] DGRAM CONNECTED 18053
unix 3 [ ] STREAM CONNECTED 33225
unix 3 [ ] STREAM CONNECTED 15834
unix 2 [ ] DGRAM CONNECTED 384127
unix 3 [ ] STREAM CONNECTED 15599
unix 3 [ ] STREAM CONNECTED 33150 /run/systemd/journal/stdout
unix 2 [ ] STREAM CONNECTED 383514
unix 3 [ ] STREAM CONNECTED 182145
unix 3 [ ] STREAM CONNECTED 76243
unix 3 [ ] STREAM CONNECTED 17923
unix 2 [ ] DGRAM 18073 /run/chrony/chronyd.sock
unix 3 [ ] STREAM CONNECTED 182173 /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 3 [ ] STREAM CONNECTED 15114
unix 3 [ ] STREAM CONNECTED 230074 /run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 16096
unix 3 [ ] STREAM CONNECTED 32629
unix 3 [ ] STREAM CONNECTED 18616
unix 2 [ ACC ] STREAM LISTENING 18408 /run/containerd/containerd.sock.ttrpc
unix 3 [ ] STREAM CONNECTED 17744
unix 2 [ ACC ] STREAM LISTENING 18411 /run/containerd/containerd.sock
unix 3 [ ] STREAM CONNECTED 15291 /run/systemd/journal/stdout
unix 3 [ ] DGRAM CONNECTED 14291
unix 3 [ ] DGRAM CONNECTED 33221
unix 2 [ ] STREAM CONNECTED 380996
unix 3 [ ] STREAM CONNECTED 18423 /run/systemd/journal/stdout
unix 2 [ ] DGRAM CONNECTED 15822
unix 2 [ ] DGRAM CONNECTED 76809
unix 2 [ ACC ] STREAM LISTENING 18614 /var/run/docker/metrics.sock
unix 3 [ ] STREAM CONNECTED 15703 /run/systemd/journal/stdout
unix 3 [ ] DGRAM CONNECTED 15613
unix 3 [ ] STREAM CONNECTED 230053 /run/systemd/journal/stdout
unix 2 [ ] DGRAM CONNECTED 14831
unix 3 [ ] STREAM CONNECTED 15807
unix 3 [ ] STREAM CONNECTED 182093
unix 3 [ ] STREAM CONNECTED 15806 /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 17927 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 181244 /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 3 [ ] STREAM CONNECTED 15421 /run/systemd/journal/stdout
unix 3 [ ] DGRAM CONNECTED 33222
unix 3 [ ] STREAM CONNECTED 17691
#### 列出所有TCP连接
root@aly ~# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 172 aly:ssh 113.133.98.9:15292 ESTABLISHED
tcp 0 0 aly:51814 100.100.30.26:http ESTABLISHED
tcp 0 0 aly:54616 100.100.0.70:http TIME_WAIT
tcp 0 0 aly:ssh 113.133.98.9:15175 ESTABLISHED
tcp6 0 0 [::]:5355 [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
#### 列出所有UDP连接
root@aly ~# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:5355 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 aly:bootpc 0.0.0.0:*
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 [::]:5355 [::]:*
udp6 0 0 localhost:323 [::]:*
#### 列出所有 TCP 连接,不使用域名解析加快查询速度。
root@aly ~# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 344 172.22.34.90:22 113.133.98.9:15292 ESTABLISHED
tcp 0 0 172.22.34.90:51814 100.100.30.26:80 ESTABLISHED
tcp 0 0 172.22.34.90:34512 100.100.0.70:80 TIME_WAIT
tcp 0 0 172.22.34.90:22 113.133.98.9:15175 ESTABLISHED
tcp6 0 0 :::5355 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
#### 列出所有监听中的 TCP 连接
root@aly ~# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::5355 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
#### 列出所有监听中的 TCP 连接,并显示进程信息。
root@aly ~# netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN 552/systemd-resolve
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 552/systemd-resolve
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 552/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 646/sshd: /usr/sbin
tcp6 0 0 :::5355 :::* LISTEN 552/systemd-resolve
tcp6 0 0 :::22 :::* LISTEN 646/sshd: /usr/sbin
#### 所有协议的统计数据
root@aly ~# netstat -s
Ip:
Forwarding: 1
1193555 total packets received
9 with invalid addresses
0 forwarded
0 incoming packets discarded
1193545 incoming packets delivered
851630 requests sent out
6 outgoing packets dropped
Icmp:
220 ICMP messages received
170 input ICMP message failed
ICMP input histogram:
destination unreachable: 193
timeout in transit: 22
echo requests: 5
21379 ICMP messages sent
0 ICMP messages failed
OutRateLimitHost: 11607
ICMP output histogram:
destination unreachable: 13972
echo requests: 7402
echo replies: 5
IcmpMsg:
InType3: 193
InType8: 5
InType11: 22
OutType0: 5
OutType3: 13972
OutType8: 7402
Tcp:
21497 active connection openings
780 passive connection openings
40984 failed connection attempts
213 connection resets received
2 connections established
1115207 segments received
797598 segments sent out
1934 segments retransmitted
618 bad segments received
513145 resets sent
InCsumErrors: 617
Udp:
52164 packets received
25579 packets to unknown port received
57 packet receive errors
53056 packets sent
0 receive buffer errors
0 send buffer errors
InCsumErrors: 57
UdpLite:
TcpExt:
40971 resets received for embryonic SYN_RECV sockets
21541 TCP sockets finished time wait in fast timer
8 packets rejected in established connections because of timestamp
643 delayed acks sent
2 delayed acks further delayed because of locked socket
Quick ack mode was activated 117 times
21 SYNs to LISTEN sockets dropped
12047 packet headers predicted
35333 acknowledgments not containing data payload received
58439 predicted acknowledgments
TCPSackRecovery: 14
Detected reordering 8 times using SACK
Detected reordering 37 times using reno fast retransmit
TCPDSACKUndo: 6
82 congestion windows recovered without slow start after partial ack
TCPLostRetransmit: 385
TCPSackFailures: 5
127 timeouts in loss state
93 fast retransmits
71 retransmits in slow start
TCPTimeouts: 1527
TCPLossProbes: 291
TCPLossProbeRecovery: 62
TCPBacklogCoalesce: 242
TCPDSACKOldSent: 97
TCPDSACKRecv: 111
7 connections reset due to unexpected data
116 connections reset due to early user close
37 connections aborted due to timeout
TCPDSACKIgnoredNoUndo: 56
TCPSackShifted: 12
TCPSackMerged: 36
TCPSackShiftFallback: 70
TCPRcvCoalesce: 19972
TCPOFOQueue: 302
TCPOFOMerge: 83
TCPChallengeACK: 7
TCPSYNChallenge: 1
TCPAutoCorking: 992
TCPWantZeroWindowAdv: 1391
TCPSynRetrans: 873
TCPOrigDataSent: 132764
TCPHystartDelayDetect: 2
TCPHystartDelayCwnd: 80
TCPKeepAlive: 102
TCPDelivered: 153994
TCPAckCompressed: 2
TcpTimeoutRehash: 643
TcpDuplicateDataRehash: 14
TCPDSACKRecvSegs: 111
IpExt:
InMcastPkts: 7
OutMcastPkts: 15
InOctets: 167811181
OutOctets: 109745744
InMcastOctets: 343
OutMcastOctets: 671
InNoECTPkts: 1233785
MPTcpExt:
#### 查询内核路由表,并禁用域名解析
root@aly ~# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.22.63.253 0.0.0.0 UG 0 0 0 eth0
100.100.2.136 172.22.63.253 255.255.255.255 UGH 0 0 0 eth0
100.100.2.138 172.22.63.253 255.255.255.255 UGH 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.22.0.0 0.0.0.0 255.255.192.0 U 0 0 0 eth0
172.22.63.253 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
#### 网络接口信息
root@aly ~# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
eth0 1500 1441905 0 0 0 1060061 0 0 0 BMRU
lo 65536 24 0 0 0 24 0 0 0 LRU
#### 显示多播组信息
root@aly ~# netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
eth0 1 224.0.0.252
eth0 1 all-systems.mcast.net
docker0 1 all-systems.mcast.net
docker0 1 224.0.0.106
lo 1 ip6-allnodes
lo 1 ff01::1
eth0 1 ff02::1:3
eth0 1 ff02::1:ff12:e82d
eth0 2 ip6-allnodes
eth0 1 ff01::1
docker0 1 ff02::6a
docker0 1 ip6-allnodes
docker0 1 ff01::1
使用-c
选项可以持续输出查询结果。
mpstat
mpstat
是 Linux 系统中用于监控 CPU 性能的工具,属于 sysstat
工具包的一部分。它可以实时显示每个 CPU 核心的详细统计信息,适用于多核 CPU 的性能分析和优化。
mpstat
的基本语法如下:
mpstat [选项] [间隔时间] [采样次数]
- 间隔时间:两次采样之间的时间间隔(秒)。
- 采样次数:采样的总次数。
如果不指定参数,mpstat
会显示系统启动以来的平均 CPU 使用情况。
mpstat
常用选项
- -P {ALL|CPU编号}:指定监控的 CPU 核心,ALL 表示所有核心。
root@aly ~ [1]# mpstat -P ALL
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
02:07:06 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:07:06 PM all 0.29 0.00 0.14 0.00 0.00 0.02 0.00 0.00 0.00 99.55
02:07:06 PM 0 0.28 0.00 0.13 0.00 0.00 0.02 0.00 0.00 0.00 99.57
02:07:06 PM 1 0.30 0.00 0.14 0.00 0.00 0.02 0.00 0.00 0.00 99.53
- -u:显示 CPU 使用率(默认)。
- -I {SUM|CPU|SCPU|ALL}:显示中断统计信息。
root@aly ~# mpstat -I ALL
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
02:08:35 PM CPU intr/s
02:08:35 PM all 941.03
02:08:35 PM CPU 1/s 4/s 6/s 8/s 9/s 10/s 11/s 12/s 14/s 15/s 24/s 25/s 26/s 27/s 28/s 29/s 30/s NMI/s LOC/s SPU/s PMI/s IWI/s RTR/s RES/s CAL/s TLB/s TRM/s THR/s DFR/s MCE/s MCP/s ERR/s MIS/s PIN/s NPI/s PIW/s
02:08:35 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.88 0.00 0.00 0.00 449.00 0.00 0.00 0.02 0.00 0.14 20.80 0.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:08:35 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.42 0.00 1.28 0.00 0.00 0.00 0.00 447.47 0.00 0.00 0.02 0.00 0.13 20.85 0.04 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:08:35 PM CPU HI/s TIMER/s NET_TX/s NET_RX/s BLOCK/s IRQ_POLL/s TASKLET/s SCHED/s HRTIMER/s RCU/s
02:08:35 PM 0 0.00 11.60 0.00 0.85 0.00 0.00 0.00 19.87 0.00 10.71
02:08:35 PM 1 0.00 11.32 0.00 1.27 0.40 0.00 0.00 21.27 0.00 10.99
- -o JSON:以 JSON 格式输出结果。
root@aly ~# mpstat -o JSON
{"sysstat": {
"hosts": [
{
"nodename": "aly",
"sysname": "Linux",
"release": "6.1.0-37-amd64",
"machine": "x86_64",
"number-of-cpus": 2,
"date": "07/16/2025",
"statistics": [
{
"timestamp": "02:06:20 PM",
"cpu-load": [
{"cpu": "all", "usr": 0.29, "nice": 0.00, "sys": 0.14, "iowait": 0.00, "irq": 0.00, "soft": 0.02, "steal": 0.00, "guest": 0.00, "gnice": 0.00, "idle": 99.55}
]
}
]
}
]
}}
- -V:显示版本信息。
mpstat
输出字段说明
- %usr:用户态程序的 CPU 使用率。
- %nice:低优先级用户态程序的 CPU 使用率。
- %sys:内核态程序的 CPU 使用率。
- %iowait:CPU 等待 I/O 操作的时间占比。
- %irq:处理硬件中断的时间占比。
- %soft:处理软件中断的时间占比。
- %steal:虚拟 CPU 等待实际 CPU 的时间占比。
- %guest:运行虚拟处理器的时间占比。
- %idle:CPU 空闲时间占比。
#### 所有CPU核心的当前统计信息
root@aly ~# mpstat
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
02:04:12 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:04:12 PM all 0.29 0.00 0.14 0.00 0.00 0.02 0.00 0.00 0.00 99.55
iostat
iostat(Input/Output Statistics)是Linux系统下一个强大的性能监控工具,属于sysstat
工具包的一部分。它主要用于监控系统的磁盘I/O活动情况和CPU使用情况。
iostat
基本命令格式
iostat [选项] [时间间隔] [次数]
iostat
常用选项
- -c 显示CPU使用情况
root@aly ~# iostat -c
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.29 0.00 0.15 0.00 0.00 99.55
- -d 显示磁盘使用情况
root@aly ~# iostat -d
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
vda 0.44 0.91 2.93 0.00 961961 3081153 0
- -h 以人类可读格式显示(如KB, MB, GB)
root@aly ~# iostat -h
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.3% 0.0% 0.2% 0.0% 0.0% 99.6%
tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device
0.44 0.9k 2.9k 0.0k 939.4M 2.9G 0.0k vda
- -k 以KB为单位显示数据
- -m 以MB为单位显示数据
- -N 显示设备映射名称
- -p 显示指定设备或分区的统计信息
- -t 显示时间戳
- -x 显示扩展统计信息
root@aly ~# iostat -Nx
Linux 6.1.0-37-amd64 (aly) 07/16/2025 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.29 0.00 0.15 0.00 0.00 99.55
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
vda 0.02 0.91 0.01 21.38 0.93 39.12 0.42 2.93 0.12 22.04 0.91 6.96 0.00 0.00 0.00 0.00 0.00 0.00 0.09 0.05 0.00 0.01
- -y 跳过首次统计(通常与时间间隔一起使用)
- -z 省略零活动设备的输出
- -j ID 显示指定设备的持久名称
- –dec={0|1|2} 指定小数位数
iostat
输出结果说明
CPU统计部分
avg-cpu: %user %nice %system %iowait %steal %idle
0.3% 0.0% 0.2% 0.0% 0.0% 99.6%
- %user:用户级别(应用程序)的CPU使用率
- %nice:优先级调整过的进程的CPU使用率
- %system:系统级别(内核)的CPU使用率
- %iowait:CPU等待I/O操作完成的时间百分比
- %steal:虚拟环境中的"被偷走"时间
- %idle:CPU空闲时间百分比
磁盘统计部分
tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd Device
0.44 0.9k 2.9k 0.0k 939.4M 2.9G 0.0k vda
0.00 0.0k 0.0k 0.0k 156.0k 0.0k 0.0k vda1
0.00 0.0k 0.0k 0.0k 4.5M 1.0k 0.0k vda2
0.44 0.9k 2.9k 0.0k 933.0M 2.9G 0.0k vda3
- tps:每秒传输次数(transfers per second)
- kB_read/s:每秒读取的数据量(KB)
- kB_wrtn/s:每秒写入的数据量(KB)
- kB_read:读取的总数据量(KB)
- kB_wrtn:写入的总数据量(KB)
lsblk
lsblk(list block devices)是一个用于列出所有可用块设备信息的命令。它能够显示设备之间的依赖关系,但不会列出RAM盘的信息。块设备包括硬盘、闪存盘、CD-ROM等。lsblk
命令包含在util-linux-ng
包中,该包现已更名为 util-linux
。
lsblk
基本用法
lsblk [选项] [<块设备> …]
lsblk
可用选项
- -a, –all:显示所有设备。
root@aly ~# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 0B 0 loop
loop1 7:1 0 0B 0 loop
loop2 7:2 0 0B 0 loop
loop3 7:3 0 0B 0 loop
loop4 7:4 0 0B 0 loop
loop5 7:5 0 0B 0 loop
loop6 7:6 0 0B 0 loop
loop7 7:7 0 0B 0 loop
vda 254:0 0 50G 0 disk
├─vda1 254:1 0 1M 0 part
├─vda2 254:2 0 191M 0 part /boot/efi
└─vda3 254:3 0 49.8G 0 part /
- -b, –bytes:以字节方式显示设备大小。
root@aly ~# lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 254:0 0 53687091200 0 disk
├─vda1 254:1 0 1048576 0 part
├─vda2 254:2 0 200278016 0 part /boot/efi
└─vda3 254:3 0 53484699136 0 part /
- -d, –nodeps:不显示从属设备或持有者。
root@aly ~# lsblk -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 254:0 0 50G 0 disk
- -f, –fs:显示文件系统信息。
root@aly ~# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
vda
├─vda1
├─vda2 vfat FAT32 742E-4CF1 176.4M 6% /boot/efi
└─vda3 ext4 1.0 119607c7-eb0a-4861-9014-0f60caf61fde 42.7G 8% /
- -m, –perms:显示权限信息。
root@aly ~# lsblk -m
NAME SIZE OWNER GROUP MODE
vda 50G root disk brw-rw----
├─vda1 1M root disk brw-rw----
├─vda2 191M root disk brw-rw----
└─vda3 49.8G root disk brw-rw----
- -l, –list:以列表格式显示。
root@aly ~# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 254:0 0 50G 0 disk
vda1 254:1 0 1M 0 part
vda2 254:2 0 191M 0 part /boot/efi
vda3 254:3 0 49.8G 0 part /
- -n, –noheadings:不显示标题。
- -o, –output
- :输出列。
- -p, –paths:打印设备路径。
- -P, –pairs:以键值对格式显示。
- -r, –raw:以原始格式显示。
- -S, –scsi:输出有关SCSI设备的信息。
- -t, –topology:显示拓扑结构信息。
root@aly ~# lsblk -t
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
vda 0 512 0 512 512 1 mq-deadline 256 128 0B
├─vda1 0 512 0 512 512 1 mq-deadline 256 128 0B
├─vda2 0 512 0 512 512 1 mq-deadline 256 128 0B
└─vda3 0 512 0 512 512 1 mq-deadline 256 128 0B
free
free
命令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
free
常用参数:
- -b 以Byte为单位显示内存使用情况。
root@aly ~# free -b
total used free shared buff/cache available
Mem: 3735609344 524595200 1961779200 2207744 1512284160 3211014144
Swap: 0 0 0
- -k 以KB为单位显示内存使用情况。
root@aly ~# free -k
total used free shared buff/cache available
Mem: 3648056 512296 1915800 2156 1476844 3135760
Swap: 0 0 0
- -m 以MB为单位显示内存使用情况。
root@aly ~# free -m
total used free shared buff/cache available
Mem: 3562 500 1870 2 1442 3062
Swap: 0 0 0
- -h 人性化的方式显示内存使用情况。
root@aly ~# free -h
total used free shared buff/cache available
Mem: 3.5Gi 500Mi 1.8Gi 2.1Mi 1.4Gi 3.0Gi
Swap: 0B 0B 0B
- -s <间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
root@aly ~# free -th
total used free shared buff/cache available
Mem: 3.5Gi 500Mi 1.8Gi 2.1Mi 1.4Gi 3.0Gi
Swap: 0B 0B 0B
Total: 3.5Gi 500Mi 1.8Gi
df
df
显示所有文件系统的使用信息,可以快速查看挂在的各个设备使用情况。
df
用法:
df [OPTION]... [FILE]...
选项说明:
- -a 显示所有设备
root@aly ~# df -a
Filesystem 1K-blocks Used Available Use% Mounted on
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
udev 1804476 0 1804476 0% /dev
devpts 0 0 0 - /dev/pts
tmpfs 364808 624 364184 1% /run
/dev/vda3 51228028 4234068 44683340 9% /
securityfs 0 0 0 - /sys/kernel/security
tmpfs 1824028 0 1824028 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
cgroup2 0 0 0 - /sys/fs/cgroup
pstore 0 0 0 - /sys/fs/pstore
efivarfs 0 0 0 - /sys/firmware/efi/efivars
bpf 0 0 0 - /sys/fs/bpf
systemd-1 - - - - /proc/sys/fs/binfmt_misc
hugetlbfs 0 0 0 - /dev/hugepages
mqueue 0 0 0 - /dev/mqueue
debugfs 0 0 0 - /sys/kernel/debug
tracefs 0 0 0 - /sys/kernel/tracing
fusectl 0 0 0 - /sys/fs/fuse/connections
configfs 0 0 0 - /sys/kernel/config
ramfs 0 0 0 - /run/credentials/systemd-sysctl.service
ramfs 0 0 0 - /run/credentials/systemd-sysusers.service
ramfs 0 0 0 - /run/credentials/systemd-tmpfiles-setup-dev.service
/dev/vda2 192559 11917 180642 7% /boot/efi
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
ramfs 0 0 0 - /run/credentials/systemd-tmpfiles-setup.service
tracefs 0 0 0 - /sys/kernel/debug/tracing
tmpfs 364804 0 364804 0% /run/user/0
- -h 友好阅读模式,进制1024
root@aly ~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.8G 0 1.8G 0% /dev
tmpfs 357M 624K 356M 1% /run
/dev/vda3 49G 4.1G 43G 9% /
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda2 189M 12M 177M 7% /boot/efi
tmpfs 357M 0 357M 0% /run/user/0
- -H 友好阅读模式,进制1000
root@aly ~# df -H
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 374M 639k 373M 1% /run
/dev/vda3 53G 4.4G 46G 9% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.3M 0 5.3M 0% /run/lock
/dev/vda2 198M 13M 185M 7% /boot/efi
tmpfs 374M 0 374M 0% /run/user/0
- i 显示inode信息,默认为块(block)
root@aly ~# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 441K 374 441K 1% /dev
tmpfs 446K 601 445K 1% /run
/dev/vda3 3.2M 105K 3.1M 4% /
tmpfs 446K 2 446K 1% /dev/shm
tmpfs 446K 2 446K 1% /run/lock
/dev/vda2 0 0 0 - /boot/efi
tmpfs 90K 22 90K 1% /run/user/0
常用格式为df -hal