在Linux系统中,可以通过多种命令和工具查看系统的运行情况,包括资源使用、进程状态、系统负载等。以下是一些常用的方法和命令,如何在Linux系统中快速查看资源使用和系统负载?,如何在Linux系统中一键掌握资源使用和系统负载?
在Linux系统中,可以通过多种命令快速查看资源使用情况和系统负载,top
命令提供实时动态的进程和资源监控,包括CPU、内存使用率及进程列表,htop
是其增强版,支持交互式操作和彩色显示,free -h
以易读格式显示内存和交换分区使用情况,df -h
则查看磁盘空间占用,uptime
命令简洁展示系统运行时间、用户数和平均负载,vmstat
和iostat
分别报告虚拟内存状态和磁盘I/O统计,适合性能分析,nmon
工具提供综合监控界面,而glances
整合多类资源数据,这些命令结合使用,可全面掌握系统运行状态,便于快速排查问题或优化性能。
在Linux系统中,管理员可以通过多种命令实时监控系统运行状态。top
和htop
提供动态的进程资源视图,直观显示CPU/内存占用情况及进程排名;free -h
快速查看内存使用情况,df -h
分析磁盘空间利用率;uptime
简洁展示系统负载平均值;vmstat
和iostat
分别监控虚拟内存和I/O设备性能;ps -aux
生成详细进程列表,netstat
或ss
检查网络连接状态,对于图形化界面用户,gnome-system-monitor
提供友好的可视化监控体验,这些工具共同构成了Linux系统性能监测的核心手段,帮助管理员快速定位资源瓶颈。
系统整体状态概览
top
/ htop
实时监控工具
top
基础系统监控
top
是Linux系统中最经典的实时监控工具,能够全面展示系统的CPU、内存使用情况以及进程状态,是系统管理员的首选工具。
top
实用操作技巧:
- 按
q
键退出监控界面 - 按
M
键按内存使用量降序排列进程 - 按
P
键按CPU使用率降序排列进程 - 按
1
键展开显示所有CPU核心的详细使用情况 - 按
Shift + >
或Shift + <
切换排序字段 - 按
k
后输入PID可终止指定进程 - 按
z
切换彩色/黑白显示模式
htop
增强型监控工具
htop
是 top
的现代化替代品,提供了更友好的交互界面和更丰富的功能,支持鼠标操作和更直观的可视化展示。
安装方法:
sudo apt install htop # Debian/Ubuntu系统 sudo yum install htop # CentOS/RHEL系统 sudo dnf install htop # Fedora系统
使用示例:
htop
htop优势特性:
- 彩色编码显示不同资源使用情况(CPU、内存、交换空间)
- 支持鼠标操作,可直接点击选择进程进行操作
- 垂直和水平滚动查看完整进程列表
- 树状视图清晰展示进程父子关系
- 更直观的CPU和内存使用率柱状图展示
- 支持进程标记和批量操作
- 可自定义显示列和排序方式
vmstat
虚拟内存统计
vmstat
命令提供关于系统虚拟内存、进程、CPU活动等的全面统计信息,特别适合分析系统整体性能瓶颈。
vmstat 1 # 每秒刷新一次数据 vmstat 5 3 # 每5秒刷新一次,共显示3次
输出字段解析:
- procs:
r
:运行队列中的进程数(若长期大于CPU核心数,说明CPU饱和)b
:等待IO的不可中断睡眠进程数
- memory:
swpd
:使用的虚拟内存量(若持续增长可能需增加物理内存)free
:空闲内存量buff
:用作缓冲的内存cache
:用作缓存的内存
- swap:
si
:每秒从磁盘读入内存量(swap in)so
:每秒从内存写入磁盘量(swap out,若持续大于0需警惕)
- io:
bi
:块设备每秒接收的块数bo
:块设备每秒发送的块数
- system:
in
:每秒中断数(包括时钟中断)cs
:每秒上下文切换数(过高会影响性能)
- cpu:
us
:用户空间CPU时间占比sy
:内核空间CPU时间占比id
:空闲CPU时间占比wa
:IO等待时间占比(过高表示IO瓶颈)st
:虚拟机偷取时间(仅虚拟化环境)
uptime
系统运行时间
uptime
命令简洁地显示系统已经运行的时间、当前登录用户数以及系统负载平均值,是快速检查系统状态的便捷工具。
uptime
典型输出示例:
10:30:00 up 5 days, 2:10, 3 users, load average: 0.15, 0.10, 0.05
负载平均值解读: 三个数字分别代表过去1分钟、5分钟和15分钟的系统平均负载,对于单核CPU系统,1.0表示完全利用;对于4核CPU,4.0表示完全利用,若15分钟负载远高于1分钟负载,可能表示负载正在下降;反之则表示负载正在上升。
专业建议:
- 负载平均值应结合CPU核心数评估
- 长期高于CPU核心数的70%可能需要优化
- 突然的负载飙升需要结合其他工具进一步分析
- 可配合
watch -n 1 uptime
实时监控负载变化
CPU性能监控
mpstat
多核CPU分析
mpstat
是 sysstat
工具包的一部分,专门用于监控多核CPU系统中每个核心的使用情况,能发现CPU负载不均衡问题。
安装 sysstat
:
sudo apt install sysstat # Debian/Ubuntu sudo yum install sysstat # CentOS/RHEL
使用示例:
mpstat -P ALL 1 # 监控所有CPU核心,每秒刷新一次
关键指标:
%usr
:用户空间CPU使用率(应用程序消耗)%nice
:低优先级进程CPU使用率%sys
:内核空间CPU使用率(系统调用消耗)%iowait
:CPU等待IO操作的时间占比(高表示IO瓶颈)%irq
:硬件中断处理时间占比%soft
:软件中断处理时间占比%idle
:CPU空闲时间占比%steal
:虚拟化环境中被hypervisor偷取的时间(仅虚拟化环境)
分析建议:
- 某个核心持续高负载可能是单线程应用导致
- 高
%iowait
需要结合IO工具进一步分析 - 高
%sys
可能表示系统调用过多或内核有问题 - 使用
pidstat
可关联进程与CPU使用情况
sar
系统活动报告
sar
是 sysstat
工具包中的历史性能数据分析工具,能够收集、报告和保存系统活动信息,非常适合事后分析。
常用命令:
sar -u 1 3 # 查看CPU使用率,每秒1次,共3次 sar -q # 查看系统负载 sar -r # 查看内存使用情况 sar -b # 查看IO和传输速率 sar -n DEV 1 3 # 查看网络设备统计
历史数据查看:
sar
默认每10分钟收集一次系统数据,可通过以下命令查看历史记录:
sar -f /var/log/sysstat/saXX # XX代表日期
实用技巧:
# 查看某天的CPU使用情况(24小时制) sar -u -f /var/log/sysstat/sa15 -s 10:00:00 -e 16:00:00 # 生成PDF报告(需要额外工具) sar -A | a2ps -o - | ps2pdf - sar_report.pdf
内存使用监控
free
内存状态查看
free
命令提供系统内存和交换空间的使用情况概览,帮助快速判断内存压力。
free -h # 以人类可读格式显示(GB/MB) free -m # 以MB为单位显示 free -s 5 # 每5秒自动刷新
输出解读:
total
:物理内存总量used
:已使用内存(包括buffers/cache)free
:完全空闲内存shared
:多个进程共享的内存buff/cache
:被缓冲和缓存使用的内存available
:估算的可用内存(新版本,更准确)
重要提示:
Linux会充分利用空闲内存作为缓存,因此看到free
内存少不必惊慌,这是正常的内存优化机制,应主要关注available
值,它表示真正可用于新应用的内存。
专业建议:
- 当
available
低于总内存10%时需警惕 - 频繁的swap使用(
si/so
)表明物理内存不足 - 使用
-w
选项可宽格式显示,避免换行
/proc/meminfo
详细内存信息
/proc/meminfo
文件提供了比 free
更详细的内存使用信息,适合深度分析内存问题。
cat /proc/meminfo
关键字段:
MemTotal
:总物理内存MemFree
:完全空闲内存MemAvailable
:估算的可用内存Buffers
:块设备缓冲内存Cached
:页面缓存内存SwapCached
:交换缓存Active
:最近使用的活跃内存Inactive
:非活跃内存(可回收)SwapTotal
:交换区总量SwapFree
:空闲交换区Dirty
:等待写回磁盘的内存Writeback
:正在写回磁盘的内存Slab
:内核数据结构缓存
分析技巧:
# 监控内存变化 watch -n 1 "cat /proc/meminfo | grep -E 'MemTotal|MemFree|MemAvailable|Cached|Buffers|SwapTotal|SwapFree'" # 计算已用内存(更准确) used_mem=$(awk '/MemTotal/ {total=} /MemAvailable/ {avail=} END {print (total-avail)/1024 "MB"}' /proc/meminfo)
磁盘I/O监控
df
磁盘空间检查
df
(disk filesystem) 命令显示文件系统的磁盘空间使用情况,是预防磁盘满问题的第一道防线。
df -h # 人类可读格式 df -i # 查看inode使用情况(防止inode耗尽)
常用选项:
-a
:显示所有文件系统(包括伪文件系统)-T
:显示文件系统类型-x
:排除特定类型的文件系统--total
:显示总计行-t
:只显示指定类型的文件系统
实用示例:
# 按使用率排序 df -h | sort -k5 -rh # 只显示真实磁盘(排除tmpfs等) df -h -x tmpfs -x devtmpfs
du
目录空间分析
du
(disk usage) 命令用于估算文件和目录的磁盘使用量,帮助定位大文件。
du -sh /var/log # 查看/var/log目录总大小 du -h --max-depth=1 /home # 查看/home下各一级目录大小
实用技巧:
# 查找当前目录下最大的10个文件 du -ah | sort -rh | head -n 10 # 查找指定目录下大于100MB的文件 find /path/to/dir -type f -size +100M -exec du -h {} + | sort -rh # 排除特定目录分析 du -h --exclude="*.iso" --max-depth=1 /
iostat
磁盘I/O统计
iostat
提供详细的设备级IO性能统计,是分析磁盘性能瓶颈的利器。
iostat -x 1 # 显示扩展IO统计,每秒刷新
关键指标:
%util
:设备利用率(接近100%表示设备饱和)await
:平均IO等待时间(毫秒,高表示设备慢)svctm
:平均服务时间(毫秒)r/s
和w/s
:每秒读写操作数rkB/s
和wkB/s
:每秒读写数据量(KB)aqu-sz
:平均请求队列长度rareq-sz
:读请求平均大小wareq-sz
:写请求平均大小
分析建议:
%util
高但吞吐量低可能表示设备有问题await
远高于svctm
表示设备饱和- 结合
pidstat -d
可找出高IO进程
iotop
实时IO监控
iotop
类似于 top
,但专门用于监控磁盘IO使用情况,可实时查看哪些进程正在大量读写磁盘。
安装:
sudo apt install iotop # Debian/Ubuntu sudo yum install iotop # CentOS/RHEL
使用:
sudo iotop -o # 只显示实际有IO活动的进程
交互命令:
- 左右箭头:改变排序字段
r
:反转排序顺序o
:只显示有IO活动的进程p
:显示进程的线程a
:显示累计IO而不是带宽q
:退出
输出列说明:
TID
:线程IDPRIO
:优先级USER
:进程所有者DISK READ
:磁盘读取速率DISK WRITE
:磁盘写入速率SWAPIN
:swap使用百分比IO>
:IO使用百分比COMMAND
:命令名
网络性能监控
netstat
/ ss
网络连接分析
netstat
是传统的网络统计工具,ss
是其更快速的现代替代品,用于分析网络连接状态。
netstat -tulnp # 查看监听中的TCP/UDP端口及对应进程 ss -tulnp # 功能相同但更高效
常用选项组合:
-t
:TCP连接-u
:UDP连接-l
:监听中的端口-n
:显示数字地址(不解析主机名)-p
:显示进程信息-a
:显示所有连接-s
:显示统计摘要-i
:显示网络接口统计-o
:显示计时器信息
实用示例:
# 查看ESTABLISHED状态的TCP连接 ss -t state established # 统计各种状态的连接数 ss -s # 查看进程使用的端口 ss -plnt | grep nginx
iftop
实时流量监控
iftop
提供类似 top
的界面,但用于监控网络流量,可实时显示各连接的带宽使用情况。
安装:
sudo apt install iftop # Debian/Ubuntu sudo yum install iftop # CentOS/RHEL
使用:
sudo iftop -i eth0 # 监控指定网卡 sudo iftop -nN # 禁用主机名解析和端口服务名
交互命令:
P
:暂停显示h
:帮助n
:开启/关闭主机名解析s
:显示源端口d
:显示目标端口t
:切换显示格式(单行/两行/三行)j
/k
:向上/向下滚动连接列表l
:设置屏幕过滤表达式
输出说明:
- 中间部分:实时流量条形图
- 右侧三个数字:过去2s/10s/40s的平均流量
TX
:发送流量RX
:接收流量TOTAL
:总流量
nload
网卡带宽监控
nload
提供简洁的实时网络带宽使用情况展示,适合快速查看网络负载。
安装:
sudo apt install nload # Debian/Ubuntu sudo yum install nload # CentOS/RHEL
使用:
nload eth0 # 监控指定网卡 nload -m # 合并所有设备的总流量
- 当前下载/上传速率
- 平均速率
- 最小/最大速率
- 总传输量
- 流量柱状图
交互命令:
- 左右箭头:切换监控的网卡
F2
:显示选项菜单q
:退出
进程管理与分析
ps
进程状态查看
ps
命令提供当前进程的快照信息,是进程分析的基础工具。
ps aux | grep nginx # 查找nginx相关进程 ps -ef --forest # 树状显示进程关系
常用选项:
a
:显示所有用户的进程u
:显示详细用户信息x
:包括没有控制终端的进程-e
:显示所有进程-f
:完整格式输出--sort
:按指定字段排序-o
:自定义输出列-L
:显示线程信息
高级用法:
# 自定义输出格式 ps -eo pid,ppid,user,%cpu,%mem,cmd --sort=-%cpu | head # 查看进程的线程 ps -eLf | grep nginx # 查看进程的环境变量 ps eww -p PID
pstree
进程树展示
pstree
以树状结构显示进程间的父子关系,直观展示进程层次结构。
pstree -p # 显示包括PID的进程树 pstree -a # 显示完整命令行 pstree -h # 高亮当前进程及其祖先
常用选项:
-n
:按PID排序而不是按名称-u
:显示用户切换-G
:使用VT