在Linux系统中,监控和管理系统资源是运维和开发工作的核心任务之一,通过合理使用命令行工具,可以实时掌握CPU、内存、磁盘、网络及进程等资源的使用情况,及时发现性能瓶颈或异常问题,以下是查看Linux各类资源的详细方法和常用命令。
CPU资源查看
CPU是系统的核心资源,查看CPU使用情况需关注整体负载、各核心利用率、进程占用等维度。
top/htop:动态实时监控
top
是Linux系统中最常用的动态监控工具,默认按CPU使用率排序,每3秒刷新一次,执行top
后,界面分为两部分:
- 顶部统计区:显示系统运行时间、登录用户数、系统负载(1分钟/5分钟/15分钟平均)、任务总数(运行中/睡眠/停止/僵死)、CPU使用率(us用户空间/内核空间/sy/nice/空闲/id/等待等)、内存使用情况。
- 进程列表区:显示各进程的PID、用户、优先级、Nice值、虚拟内存(VIRT)、物理内存(RES)、共享内存(SHR)、CPU及内存占用率、运行时间等。
常用参数:
-d
:刷新间隔(如top -d 5
每5秒刷新);-p
:监控指定进程(如top -p 1234
);-c
:显示完整命令行而非进程名。
htop
是top
的增强版(需安装),支持鼠标操作、进程树视图、颜色区分,更直观便捷,推荐优先使用。
vmstat:虚拟内存统计(含CPU信息)
vmstat
报告进程、内存、I/O、CPU的整体情况,适合快速查看系统状态。
vmstat [刷新间隔 [采样次数]]
关键列说明:
r
:运行队列进程数(持续大于CPU核心数表示CPU不足);us
:用户空间CPU占用率;sy
:内核空间CPU占用率;id
:CPU空闲率;wa
:等待I/O的CPU时间(过高说明磁盘瓶颈)。
vmstat 2 3
表示每2秒采样一次,共3次,输出3行数据(第一行是平均值)。
mpstat:多CPU核心监控
mpstat
来自sysstat
包,可查看每个CPU核心的详细使用情况。
mpstat [选项] [刷新间隔 [采样次数]]
常用参数:
-P ALL
:显示所有CPU核心(包括all
和0,1,2...
);-u
:仅显示CPU使用率(默认)。
mpstat -P ALL 1
每秒显示各核心的us/sy/id/wa等指标。
uptime:系统负载查看
uptime
快速显示系统启动时间和平均负载(1分钟/5分钟/15分钟),负载值表示活跃进程数,若超过CPU核心数则可能过载。
内存资源查看
内存不足会导致系统卡顿,需关注已用、空闲、缓存、交换分区等指标。
free:内存使用概览
free
是最直接的内存查看命令,-h
参数以人类可读格式(KB/MB/GB)显示。
free -h
关键列说明:
total
:总内存;used
:已用内存(包括应用程序+缓存);free
:完全空闲内存;buff/cache
:缓冲区+缓存(可被回收释放);available
:真正可用的内存(≈free+buff/cache,推荐关注此值而非free
);Swap
:交换分区使用情况(频繁使用Swap说明物理内存不足)。
vmstat:内存与交换分区
vmstat
的内存相关列:
swpd
:已使用的交换分区大小;free
:空闲内存;buff
:缓冲区大小;cache
:缓存大小;si
:从交换区换入内存的数据量(KB/s);so
:换出到交换区的数据量(KB/s),若si/so
持续大于0,说明内存紧张。
磁盘资源查看
磁盘关注使用率、I/O性能、inode使用情况,避免空间不足或I/O瓶颈。
df:磁盘分区使用率
df
查看各文件系统的磁盘使用情况,-h
以人类可读格式显示,-T
显示文件系统类型。
df -hT
关键列:
Filesystem
:分区路径(如/dev/sda1
);Use%
:使用率(超过80%需警惕);Mounted on
:挂载点(如、/home
)。
du:目录/文件大小统计
du
统计指定目录或文件的大小,-sh
显示总大小(-s
汇总,-h
人类可读),--max-depth=1
限制目录深度。
du -sh /var/log # 查看/var/log目录总大小 du -sh /* --max-depth=1 # 查看根目录下一级子目录大小
iostat:磁盘I/O性能监控
iostat
(需安装sysstat
)查看磁盘设备的读写请求、吞吐量、延迟等,-d
显示磁盘设备,-x
显示扩展指标。
iostat -dx 1
关键指标:
%util
:磁盘使用率(超过70%说明I/O瓶颈);await
:平均I/O等待时间(过高说明磁盘慢);r/s
/w/s
:每秒读写次数;rkB/s
/wkB/s
:每秒读写数据量(KB)。
网络资源查看
网络关注带宽使用、连接状态、端口占用等,排查网络拥堵或异常连接。
ip/ifconfig:网络接口状态
ip
(现代Linux推荐)或ifconfig
查看网络接口的IP地址、MAC地址、接收/发送数据包数、错误数等。
ip a # 显示所有网络接口信息 ip link show eth0 # 查看eth0接口详细状态
netstat/ss:网络连接与端口监控
netstat
(传统工具)和ss
(推荐,更快)查看TCP/UDP连接、监听端口、进程PID等。
ss -tuln # 显示所有监听端口(-t TCP,-u UDP,-n 数字形式,-l 仅监听) ss -tulpn | grep :80 # 查看80端口占用情况及进程PID netstat -an | grep ESTABLISHED # 查看已建立的TCP连接
nload/iftop:带宽实时监控
nload
实时显示网络接口的上下行带宽,iftop
按流量排序显示各主机的连接情况(需安装)。
进程资源查看
进程是资源占用的主体,需关注CPU、内存占用高的进程,及时终止异常进程。
ps:静态进程列表
ps aux
查看所有进程的详细信息,-ef
以BSD格式显示,结合grep
过滤进程。
ps aux | grep nginx # 查找nginx相关进程 ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu # 按CPU占用率排序
top/htop:动态进程监控
top
/htop
可直接查看各进程的CPU、内存实时占用,支持排序(P
按CPU,M
按内存)、杀死进程(htop
中按F9
)。
常用资源查看命令总结
命令 | 主要用途 | 常用参数 | 说明 |
---|---|---|---|
top | 动态监控进程/CPU/内存 | -d 刷新间隔,-p 指定进程 |
默认按CPU排序,支持交互操作 |
free | 内存使用情况 | -h 人类可读,-m 以MB为单位 |
关注available 而非free |
df | 磁盘分区使用率 | -h 人类可读,-T 显示文件系统类型 |
检查分区空间是否不足 |
iostat | 磁盘I/O性能 | -d 磁盘设备,-x 扩展指标 |
%util 过高说明I/O瓶颈 |
ss | 网络连接与端口 | -tuln 监听端口,-p 显示进程PID |
替代netstat ,性能更优 |
ps | 静态进程列表 | aux 所有进程,--sort 排序 |
结合grep 过滤特定进程 |
相关问答FAQs
Q1:如何快速找到占用CPU最高的进程?
A:使用top
或htop
直接监控,或通过ps
命令排序:
# 方法1:top交互操作(按P按CPU排序) top # 方法2:ps命令一次性输出(按CPU降序) ps aux --sort=-%cpu | head -n 10 # 显示前10个高CPU进程
Q2:为什么free
命令显示的可用内存(available)比完全空闲内存(free)少?
A:Linux内核会主动将空闲内存用作buff/cache
(缓冲区+缓存),以提高文件读写性能。available
表示“真正可被应用程序立即使用的内存”,它等于free + buff/cache中可回收的部分
,而free
仅指完全未被使用的内存。available
比free
更准确反映可用内存,若available
持续接近0,说明内存紧张。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25408.html