常用的Linux性能检测工具

下图是一些常用的Linux性能检测工具,通过这些工具我们可以对系统进行详细的检测。

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 命令;

top command
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