内容大纲
- Part01-vmstat命令概述
- Part02-vmstat命令基本使用
- Part03-vmstat命令
更多学习教程公众号风哥教程itpux_com
参数详解
- Part04-vmstat命令高级功能
- Part05-实战案例
内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
1. vmstat命令概述
vmstat命令是Linux系统中的虚拟内存统计工具,它可以报告关于进程、内存、分页、块I/O、陷阱和CPU活动的信息。
风哥提示:
# 进程统计:运行、阻塞、交换的进程数量
# 内存统计:内存使用、缓冲区、缓存
# 交换统计:交换进、交换出
# I/O统计:块设备读写
# 系统统计:中断、上下文切换
# CPU统计:用户、系统、空闲、等待时间
2. vmstat命令基本使用
使用vmstat命令查看系统统计信息。
更多视频教程www.fgedu.net.cn
# 1. 查看系统统计信息
[root@localhost ~]# vmstat
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4096000 102400 2048000 0 0 0 0 10 20 2 1 96 1 0
# 2. 指定采样间隔和次数
[root@localhost ~]# vmstat 1 3
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4096000 102400 2048000 0 0 0 0 10 20 2 1 96 1 0
0 0 0 4096000 102400 2048000 0 0 0 0 12 25 3 1 95 1 0
1 0 0 4096000 102400 2048000 0 0 0 0 11 22 2 1 96 1 0
# 3. 显示内存统计信息
[root@localhost ~]# vmstat -s
8589934592 total memory
4294967296 used memory
4294967296 active memory
2147483648 inactive memory
4294967296 free memory
104857600 buffer memory
2147483648 swap cache
4294967296 total swap
0 used swap
4294967296 free swap
0 non-nice user cpu ticks
0 nice user cpu ticks
0 system cpu ticks
0 idle cpu ticks
0 IO-wait cpu ticks
0 IRQ cpu ticks
0 softirq cpu ticks
0 stolen cpu ticks
0 pages paged in
0 pages paged out
0 pages swapped in
0 pages swapped out
0 interrupts
0 CPU context switches
1234567890 boot time
0 forks
# 4. 显示磁盘统计信息
[root@localhost ~]# vmstat -d
disk- ————reads———— ————writes———– —–IO——
total merged ms total merged ms cur sec
sda 100 0 10 50 0 5 0 0
sdb 200 0 20 100 0 10 0 0
sdc 300 0 30 150 0 15 0 0
# 5. 显示分区统计信息
[root@localhost ~]# vmstat -p /dev/sda
sda reads read sectors writes requested writes
total merged total merged ms
sda1 50 0 25 0 5
sda2 50 0 25 0 5
total 100 0 50 0 10
3. vmstat命令
更多学习教程公众号风哥教程itpux_com
参数详解
详解vmstat命令的各个参数。
# 1. 进程统计(procs)
# r:等待运行的进程数
# b:处于不可中断睡眠状态的进程数
# 2. 内存统计(memory)
# swpd:使用的虚拟内存大小
# free:空闲的物理内存大小
# buff:用作缓冲区的内存大小
# cache:用作缓存的内存大小
# 3. 交换统计(swap)
# si:从磁盘交换到内存的速率
# so:从内存交换到磁盘的速率
# 4. I/O统计(io)
# bi:从块设备读取的速率
# bo:写入块设备的速率
# 5. 系统统计(system)
# in:每秒中断数
# cs:每秒上下文切换数
# 6. CPU统计(cpu)
# us:用户空间CPU时间百分比
# sy:内核空间CPU时间百分比
# id:空闲CPU时间百分比
# wa:等待I/O的CPU时间百分比
# st:从虚拟机窃取的CPU时间百分比
# 查看详细参数说明
[root@localhost ~]# vmstat –help
Usage:
vmstat [options] [delay [count]]
Options:
-a, –active active/inactive memory
-f, –forks number of forks since boot
-m, –slabs slabinfo
-n, –one-header do not redisplay header
-s, –stats event counter statistics
-d, –disk disk statistics
-D, –disk-sum summarize disk statistics
-p, –partition
-S, –unit
-w, –wide wide mode
-t, –timestamp show timestamp
-h, –help display this help and exit
-V, –version output version information and exit
For more details see vmstat(8).
from PG视频:www.itpux.com
4. vmstat命令高级功能
使用vmstat命令的高级功能。
# 1. 显示活动/非活动内存
[root@localhost ~]# vmstat -a
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 0 4096000 2048000 2048000 0 0 0 0 10 20 2 1 96 1 0
# 2. 显示fork统计
[root@localhost ~]# vmstat -f
1234 forks
# 3. 显示slab信息
[root@localhost ~]# vmstat -m
Cache Num Total Size Pages
dentry 100 200 256 1
inode 50 100 512 1
tcp 25 50 256 1
udp 25 50 256 1
…
# 4. 显示事件计数器统计
[root@localhost ~]# vmstat -s
8589934592 total memory
4294967296 used memory
4294967296 active memory
2147483648 inactive memory
4294967296 free memory
104857600 buffer memory
2147483648 swap cache
4294967296 total swap
0 used swap
4294967296 free swap
0 non-nice user cpu ticks
0 nice user cpu ticks
0 system cpu ticks
0 idle cpu ticks
0 IO-wait cpu ticks
0 IRQ cpu ticks
0 softirq cpu ticks
0 stolen cpu ticks
0 pages paged in
0 pages paged out
0 pages swapped in
0 pages swapped out
0 interrupts
0 CPU context switches
1234567890 boot time
0 forks
# 5. 显示时间戳
[root@localhost ~]# vmstat -t 1 3
procs ———–memory———- —swap– —–io—- -system– ——cpu—– —–timestamp—
r b swpd free buff cache si so bi bo in cs us sy id wa st CST
1 0 0 4096000 102400 2048000 0 0 0 0 10 20 2 1 96 1 0 2026-04-03 10:00:00
0 0 0 4096000 102400 2048000 0 0 0 0 12 25 3 1 95 1 0 2026-04-03 10:00:01
1 0 0 4096000 102400 2048000 0 0 0 0 11 22 2 1 96 1 0 2026-04-03 10:00:02
# 6. 使用不同单位显示
[root@localhost ~]# vmstat -S M
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4096 100 2048 0 0 0 0 10 20 2 1 96 1 0
# 7. 宽模式显示
[root@localhost ~]# vmstat -w
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4096000 102400 2048000 0 0 0 0 10 20 2 1 96 1 0
5. 实战案例
学习交流加群风哥微信: itpux-com
使用vmstat命令监控系统性能。
# 1. 查看系统统计信息
[root@localhost ~]# vmstat
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4096000 102400 2048000 0 0 0 0 10 20 2 1 96 1 0
# 2. 持续监控系统状态
[root@localhost ~]# vmstat 1 10
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 4096000 102400 2048000 0 0 0 0 10 20 2 1 96 1 0
0 0 0 4096000 102400 2048000 0 0 0 0 12 25 3 1 95 1 0
1 0 0 4096000 102400 2048000 0 0 0 0 11 22 2 1 96 1 0
0 0 0 4096000 102400 2048000 0 0 0 0 13 24 3 1 95 1 0
1 0 0 4096000 102400 2048000 0 0 0 0 10 21 2 1 96 1 0
0 0 0 4096000 102400 2048000 0 0 0 0 12 23 3 1 95 1 0
1 0 0 4096000 102400 2048000 0 0 0 0 11 22 2 1 96 1 0
0 0 0 4096000 102400 2048000 0 0 0 0 13 24 3 1 95 1 0
1 0 0 4096000 102400 2048000 0 0 0 0 10 21 2 1 96 1 0
0 0 0 4096000 102400 2048000 0 0 0 0 12 23 3 1 95 1 0
# 3. 创建监控脚本
[root@localhost ~]# cat > /usr/local/bin/vmstat-monitor.sh << 'EOF'
#!/bin/bash
# script.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# vmstat监控脚本
LOG_FILE="/var/log/vmstat-monitor.log"
ALERT_EMAIL="admin@fgedu.net.cn"
# 记录日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 检查CPU使用率
check_cpu() {
CPU_IDLE=$(vmstat 1 2 | tail -1 | awk ‘{print $15}’)
CPU_USAGE=$(echo “100 – $CPU_IDLE” | bc)
if [ $(echo “$CPU_USAGE > 80” | bc) -eq 1 ]; then
log “WARNING: CPU usage is ${CPU_USAGE}%”
echo “CPU usage is ${CPU_USAGE}%” | mail -s “WARNING: CPU usage alert” $ALERT_EMAIL
fi
}
# 检查内存使用率
check_memory() {
MEMORY_FREE=$(vmstat 1 2 | tail -1 | awk ‘{print $4}’)
MEMORY_TOTAL=$(free | grep Mem | awk ‘{print $2}’)
MEMORY_USAGE=$(echo “scale=1; ($MEMORY_TOTAL – $MEMORY_FREE) / $MEMORY_TOTAL * 100” | bc)
if [ $(echo “$MEMORY_USAGE > 80” | bc) -eq 1 ]; then
log “WARNING: Memory usage is ${MEMORY_USAGE}%”
echo “Memory usage is ${MEMORY_USAGE}%” | mail -s “WARNING: Memory usage alert” $ALERT_EMAIL
fi
}
# 检查I/O等待
check_io_wait() {
IO_WAIT=$(vmstat 1 2 | tail -1 | awk ‘{print $16}’)
if [ $(echo “$IO_WAIT > 20” | bc) -eq 1 ]; then
log “WARNING: I/O wait is ${IO_WAIT}%”
echo “I/O wait is ${IO_WAIT}%” | mail -s “WARNING: I/O wait alert” $ALERT_EMAIL
fi
}
# 主函数
main() {
log “Starting vmstat monitoring…”
check_cpu
check_memory
check_io_wait
log “Vmstat monitoring completed.”
}
# 执行主函数
main
EOF
# 4. 设置脚本执行权限
[root@localhost ~]# chmod +x /usr/local/bin/vmstat-monitor.sh
# 5. 创建日志文件
[root@localhost ~]# touch /var/log/vmstat-monitor.log
[root@localhost ~]# chmod 644 /var/log/vmstat-monitor.log
# 6. 配置定时任务
[root@localhost ~]# echo “*/5 * * * * root /usr/local/bin/vmstat-monitor.sh” > /etc/cron.d/vmstat-monitor
# 7. 重启cron服务
[root@localhost ~]# systemctl restart crond
# 8. 测试监控脚本
[root@localhost ~]# /usr/local/bin/vmstat-monitor.sh
# 9. 查看日志
[root@localhost ~]# tail -f /var/log/vmstat-monitor.log
[2026-04-03 10:00:00] Starting vmstat monitoring…
[2026-04-03 10:00:05] Vmstat monitoring completed.
# 10. 配置日志轮转
[root@localhost ~]# cat > /etc/logrotate.d/vmstat-monitor << 'EOF'
/var/log/vmstat-monitor.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 root root
}
EOF
# 11. 测试日志轮转
[root@localhost ~]# logrotate -f /etc/logrotate.d/vmstat-monitor
提示
vmstat是监控系统性能的重要工具,可以快速发现系统瓶颈。建议定期使用vmstat命令检查系统状态,及时发现异常。对于长期监控,可以结合脚本和定时任务实现自动化监控。
ss=”footer”>
Linux教程163 – vmstat命令系统监控
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
