主要是对另一些监控命令做一下知识的补充
findmnt findmnt 是 Linux 中用于查找挂载文件系统信息的实用工具,属于 util-linux 软件包的一部分。它提供了一种灵活且结构化的方式来查询 /proc/self/mountinfo 或 /etc/fstab 中的挂载点信息
参数
含义
-l / –list
以列表格式输出(默认模式)
-t <类型>
仅显示指定文件系统类型的挂载点(如 ext4, xfs, nfs, tmpfs 等)
-n / –noheadings
不显示标题栏(适合脚本处理)
–source <设备>
根据源设备(如 /dev/sda1)过滤挂载点
–target <路径>
根据挂载点路径(如 /mnt/data)过滤
-J / –json
输出 JSON 格式(适合编程解析)
ps风格与常用参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ps aux ps -ef ps --help 非Linux的Unix系统(如Solaris、AIX): 默认仅支持UNIX风格,BSD风格的命令可能不被识别 选项必须使用短横线(-),例如 -e, -f。 参数组合需分开书写(如 -e -f,不可合并为 -ef,但某些实现允许合并)。 ps -u root ps -fp 1234 ps -e --forest ps aux --sort =-%cpu ps -eo pid,ppid,cmd,%cpu,%mem --sort =-%mem | head ps aux --sort =-%mem | head -n 10 ps aux | awk '{if ($8=="Z") print}'
维度
UNIX(System V)风格
BSD风格
语法简洁性
选项需带 -
(如 -ef
),参数需分开
选项无 -
(如 aux
),参数可合并
默认输出
仅显示当前终端进程,信息较简略
显示所 有进程,包含资源占用(%CPU、%MEM)
标准化程度
符合POSIX标准,兼容性强
非POSIX标准,但广泛支持
典型场景
脚本编写、需严格兼容性的环境
日常命令行快速查看进程状态
sysstat命令 sysstat 是一个功能强大的 Linux 系统性能监控工具包,包含一系列用于收集和分析系统资源使用情况的工具。它常用于服务器性能优化、故障排查和长期资源使用趋势分析。
不需要记住,因为记不住,只要知道有这个东西就行了
数据来源 :
/proc 文件系统(如 /proc/stat、/proc/diskstats、/proc/net/dev 等)。
/sys 文件系统(如块设备调度器参数、CPU 频率等)。
工具举例 :
iostat:通过解析 /proc/diskstats 获取磁盘 I/O 统计。
mpstat:通过 /proc/stat 和 /proc/interrupts 获取 CPU 和中断信息。
sar:综合读取 /proc 下的多类统计文件。
1 2 3 4 5 6 7 8 9 yum -y install sysstat rpm -ql sysstat | grep bin /usr/bin/cifsiostat /usr/bin/iostat /usr/bin/mpstat /usr/bin/pidstat /usr/bin/sadf /usr/bin/sar /usr/bin/tapestat
mpstat(CPU) CPU实时监控工具,可以查看多核CPU中每个计算核心的统计数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 mpstat -I Usage: mpstat [ options ] [ <interval> [ <count> ] ] Options are: [ -A ] [ -n ] [ -T ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ] [ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ] mpstat -P ALL Linux 5.14.0-503.33.1.el9_5.x86_64 (1panel) 04/18/25 _x86_64_ (12 CPU) 16:16:32 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 16:16:32 all 0.49 0.00 0.31 0.18 0.28 0.07 0.02 0.00 0.00 98.65 16:16:32 0 0.49 0.00 0.31 0.18 0.27 0.11 0.02 0.00 0.00 98.63 16:16:32 1 0.49 0.00 0.31 0.17 0.27 0.07 0.02 0.00 0.00 98.68 16:16:32 2 0.49 0.00 0.31 0.17 0.27 0.07 0.02 0.00 0.00 98.68 16:16:32 3 0.49 0.00 0.31 0.18 0.28 0.07 0.02 0.00 0.00 98.65 16:16:32 4 0.49 0.00 0.31 0.19 0.28 0.06 0.02 0.00 0.00 98.65 16:16:32 5 0.49 0.00 0.31 0.18 0.28 0.06 0.02 0.00 0.00 98.66 16:16:32 6 0.49 0.00 0.31 0.18 0.28 0.06 0.02 0.00 0.00 98.65 16:16:32 7 0.49 0.00 0.31 0.18 0.28 0.06 0.02 0.00 0.00 98.66 16:16:32 8 0.49 0.00 0.31 0.18 0.28 0.06 0.02 0.00 0.00 98.66 16:16:32 9 0.49 0.00 0.31 0.17 0.28 0.06 0.02 0.00 0.00 98.66 16:16:32 10 0.49 0.00 0.31 0.17 0.30 0.07 0.02 0.00 0.00 98.63 16:16:32 11 0.49 0.00 0.32 0.17 0.28 0.06 0.02 0.00 0.00 98.66 mpstat -I SUM -P ALL Linux 5.14.0-503.33.1.el9_5.x86_64 (1panel) 04/21/25 _x86_64_ (12 CPU) 10:52:22 CPU intr/s 10:52:22 all 6689.66 10:52:22 0 587.31 10:52:22 1 549.88 10:52:22 2 546.00 10:52:22 3 560.88 10:52:22 4 559.99 10:52:22 5 559.19 10:52:22 6 558.27 10:52:22 7 557.52 10:52:22 8 555.18 10:52:22 9 553.22 10:52:22 10 556.68 10:52:22 11 551.86 mpstat -I CPU -P ALL -o JSON 以json格式进行输出
指标
说明
典型场景
%usr
用户态 CPU 利用率 :执行用户空间程序(非特权级代码)的时间占比。
数值高表示应用程序(如 Java、Python)正在大量消耗 CPU。
%nice
低优先级用户态 CPU 利用率 :通过 nice
调整优先级的进程占用的 CPU 时间。
后台低优先级任务(如批处理)运行时此值会上升。
%sys
内核态 CPU 利用率 :执行系统内核操作(如系统调用、中断处理)的时间占比。
数值高可能因频繁系统调用(如网络/磁盘 I/O)或内核模块(如驱动)负载过重。
%iowait
I/O 等待时间占比 :CPU 空闲且等待 I/O 操作(磁盘/网络)完成的时间比例。
高值表明系统存在 I/O 瓶颈(如磁盘慢或高负载),CPU 因等待 I/O 而无法工作。
%irq
硬件中断处理时间占比 :处理硬件中断(如键盘、网卡)的时间。
网络密集型应用(如高流量服务器)可能导致此值上升。
%soft
软件中断处理时间占比 :处理内核软件中断(如定时器、任务队列)的时间。
高值常见于多线程调度或频繁定时任务(如数据库锁竞争)。
%steal
虚拟化环境中的 CPU 争抢时间 :被其他虚拟机占用的物理 CPU 时间。
虚拟化环境中,若宿主机超卖资源,此值高表示当前 VM 被抢占 CPU,性能受影响。
%guest
虚拟化客户机 CPU 时间 :运行虚拟化客户机(如 KVM 虚拟机)的时间占比。
宿主机的 CPU 时间用于处理虚拟机请求时此值升高。
%gnice
低优先级虚拟化客户机 CPU 时间 :运行低优先级虚拟机任务的时间。
类似 %nice
,但专用于虚拟化环境中的低优先级客户机任务。
%idle
CPU 空闲时间占比 :CPU 未被使用且无 I/O 等待的时间。
高值表示 CPU 未被充分利用;低值可能表示 CPU 饱和(需结合 %iowait
判断)。
iostat(磁盘) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 iostat -d (默认参数) Linux 5.15.0-136-generic (ws-station) 2025年04月21日 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.56 0.11 2.30 0.26 0.00 88.77 Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0.01 0.01 0.00 0.00 17 0 0 loop1 0.02 0.14 0.00 0.00 349 0 0 loop10 0.09 1.36 0.00 0.00 3448 0 0 loop11 0.02 0.14 0.00 0.00 347 0 0 loop12 0.86 10.57 0.00 0.00 26794 0 0 loop13 0.17 2.65 0.00 0.00 6721 0 0 loop14 0.00 0.01 0.00 0.00 14 0 0 loop2 0.02 0.14 0.00 0.00 351 0 0 loop3 0.71 2.14 0.00 0.00 5425 0 0 loop4 0.02 0.42 0.00 0.00 1073 0 0 loop5 0.02 0.14 0.00 0.00 361 0 0 loop6 0.02 0.43 0.00 0.00 1082 0 0 loop7 0.03 0.68 0.00 0.00 1728 0 0 loop8 0.02 0.42 0.00 0.00 1074 0 0 loop9 0.02 0.43 0.00 0.00 1101 0 0 nvme0n1 91.23 3030.50 1074.37 0.00 7679868 2722669 0 iostat -c Linux 5.15.0-136-generic (ws-station) 2025年04月21日 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.40 0.52 2.36 0.25 0.00 88.47 iostat -c 1 Linux 5.15.0-136-generic (ws-station) 2025年04月21日 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.38 0.54 2.36 0.25 0.00 88.48 avg-cpu: %user %nice %system %iowait %steal %idle 5.26 13.59 2.82 0.00 0.00 78.33 -c 显示 CPU 使用率统计 -d 显示磁盘 I/O 统计(默认) -x 显示 扩展统计信息(更详细的 I/O 指标) -k 以 KB/s 为单位显示数据(默认块数为 512B) -m 以 MB/s 为单位显示数据 数字A 数字B: 每隔A秒刷新一次,一共B次 -y 忽略开机时的读写 -t 记录时间戳
pidstat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 -u 监控 CPU 使用率(默认选项) -r 监控 内存使用(如缺页、虚拟内存等) -d 监控 磁盘 I/O(读写速率、操作次数) -s 监控 栈使用(内核栈利用率) -v 监控 内核表资源(如文件句柄、线程数) -p PID 监控指定进程(如 -p 1234 ) -C 进程名 按进程名筛选(如 -C nginx) -t 显示 线程级统计(监控多线程进程) --human 人类友好格式(自动单位转换) pidstat -urd 2 5 --human 均时间: UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 平均时间: 1000 10724 0. 0B 1. 6k 0. 0B 0 feishu 平均时间: 1000 10855 0. 0B 409. 2B 409. 2B 0 feishu 平均时间: 1000 11071 0. 0B 409. 2B 0. 0B 0 feishu 平均时间: 1000 12271 0. 0B 48. 8k 0. 0B 0 firefox 平均时间: 1000 20858 0. 0B 818. 4B 0. 0B 0 chrome 平均时间: 1000 55790 0. 0B 24. 4k 0. 0B 0 cherrystudio
vmstat(虚拟内存) 1 2 3 4 5 6 7 8 vmstat -SM procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b 交换 空闲 缓冲 缓存 si so bi bo in cs us sy id wa st 1 0 0 537 204 7039 0 0 134 83 317 638 8 2 90 0 0 若 wa 持续偏高,使用 iostat 检查磁盘性能。(磁盘太慢) 若 si/so 持续大于 0,需优化内存使用或扩容。(正在使用SWAP,内存性能有问题) 若 cs 过高,结合 pidstat 分析具体进程的上下文切换原因。
字段名
字段含义
备注
r (procs)
等待运行的进程数(运行队列长度)
长期超过 CPU 核数可能表示 CPU 饱和。
b (procs)
不可中断睡眠状态的进程数(通常因 I/O 阻塞)
值高可能表示磁盘或网络 I/O 瓶颈。
交换 (swpd)
已使用的虚拟内存(Swap)总量(单位:MB)
值大于 0 可能表示物理内存不足。
空闲 (free)
空闲的物理内存量(单位:MB)
空闲内存较少时,系统可能依赖缓存或触发 Swap。
缓冲 (buff)
内核缓冲区占用的内存(单位:MB),用于临时存储待写入磁盘的数据
缓冲区的数据通常是未落盘的脏数据。
缓存 (cache)
内核缓存占用的内存(单位:MB),用于缓存从磁盘读取的文件
缓存可加速后续文件访问,内存不足时会释放。
si
每秒从 Swap 换入内存的数据量(单位:MB/s)
值高表明系统正在从 Swap 恢复数据,内存不足。
so
每秒从内存换出到 Swap 的数据量(单位:MB/s)
值高表明系统正在将内存数据写入 Swap,内存不足。
bi
每秒从块设备读取的块数(1 块 = 512B 或 4KB)
高值可能表示频繁磁盘读取(如数据库查询)。
bo
每秒向块设备写入的块数
高值可能表示频繁磁盘写入(如日志写入)。
in
每秒中断次数(包括时钟中断、硬件中断等)
中断次数与硬件设备和系统负载相关。
cs
每秒上下文切换次数
高值可能因进程/线程过多或锁竞争(结合 pidstat
分析)。
us (cpu)
用户态 CPU 时间占比(应用程序代码消耗)
高值表示应用程序占用大量 CPU(如计算密集型任务)。
sy (cpu)
内核态 CPU 时间占比(系统内核操作消耗)
高值可能因系统调用频繁(如网络、I/O 操作)。
id (cpu)
空闲 CPU 时间占比
高值表示 CPU 资源充足。
wa (cpu)
等待 I/O 的 CPU 时间占比
高值(如 >20%)表示 I/O 瓶颈(磁盘或网络速度不足)。
st (cpu)
虚拟化环境中被其他虚拟机占用的 CPU 时间占比
仅在虚拟化环境中有效,高值表示宿主机资源被其他虚拟机抢占。
sar(生成系统检测报告) sar(System Activity Reporter)是 sysstat 工具包中用于收集和报告系统性能数据的核心工具
1 2 3 4 5 6 7 8 9 10 11 12 13 -A 显示所有统计信息(CPU、内存、磁盘、网络等综合报告) -u 显示 CPU 利用率(默认参数,可省略) -P ALL 显示每个 CPU 核心的详细利用率(需结合 -u 使用) -r 报告内存和交换空间使用情况(如 kbmemfree, %memused) -b 磁盘 I/O 统计(读写速率、IOPS、传输量) -n DEV 网络接口流量统计(收发包速率、带宽、错误数) -d 块设备详细活动统计(如 sda, nvme0n1 的读写延迟和队列深度) -q 系统负载和队列长度(如 runq-sz, ldavg-1) -w 进程上下文切换统计(自愿/非自愿切换次数) -f /path/file 从指定文件读取历史数据(默认读取 /var/log/sa/saXX,XX 为日期) -o file 将数据保存到二进制文件(便于后续分析) -p 以易读格式显示磁盘设备名(如将 sda 转换为 /dev/sda)
sa1 sa2工具
在较新的 Linux 发行版(如 CentOS 8+/RHEL 8+)中,sysstat 已从 cron 迁移到 systemd timer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 /usr/lib64/sa/ /usr/lib/sysstat/ sa1:数据采集脚本 通常由 cron 任务定时触发(默认每 10 分钟执行一次)。 配置文件路径:/etc/cron.d/sysstat sa2:报告生成脚本 调用 sar 工具,生成每日汇总报告,将统计数据以文本格式保存到 /var/log/sa/sarXX 通常在 每天午夜 由 cron 任务触发 ls /var/log/sa/sa01 sa05 sa09 sa13 sa17 sa21 sa26 sa30 sar03 sar07 sar11 sar15 sar19 sar25 sar29 sa02 sa06 sa10 sa14 sa18 sa22 sa27 sa31 sar04 sar08 sar12 sar16 sar20 sar26 sar30 sa03 sa07 sa11 sa15 sa19 sa24 sa28 sar01 sar05 sar09 sar13 sar17 sar21 sar27 sar31 sa04 sa08 sa12 sa16 sa20 sa25 sa29 sar02 sar06 sar10 sar14 sar18 sar24 sar28 sar -f /var/log/sa/sa22 cat /usr/lib/systemd/system/sysstat.service[Unit] Description=Resets System Activity Logs [Service] Type=oneshot RemainAfterExit=yes User=root ExecStart=/usr/lib64/sa/sa1 --boot [Install] WantedBy=multi-user.target Also=sysstat-collect.timer Also=sysstat-summary.timer vim /etc/sysconfig/sysstat vim /etc/sysconfig/sysstat.ioconf
tapestat stat(磁带存储) cifsiostat(ceph存储) sysstat的systemd-timer(定时器)—取代cron timer允许用户激活其他服务单元
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 systemctl status sysstat-collect.timer 每十分钟进行一次系统信息收集 ... Apr 01 21:39:32 1panel systemd[1]: Started Run system activity accounting tool every 10 minutes. 查看其服务文件--每十分钟激活一次 cat /usr/lib/systemd/system/sysstat-collect.timer[Unit] Description=Run system activity accounting tool every 10 minutes [Timer] **OnCalendar=*:00/10** [Install] WantedBy=sysstat.service 如果未指定Unit=,则默认触发同名服务,即sysstat-collect.service cat /usr/lib/systemd/system/sysstat-collect.service[Unit] Description=system activity accounting tool Documentation=man:sa1(8) After=sysstat.service [Service] Type=oneshot User=root ExecStart=/usr/lib64/sa/sa1 1 1