Linux 服务器监控是确保系统稳定运行的关键环节,通过合理的命令和工具,管理员可以实时掌握系统资源使用情况、进程状态、网络流量等信息,及时发现并解决潜在问题,以下将详细介绍 Linux 服务器中常用的监控命令及其使用方法,涵盖 CPU、内存、磁盘、网络等多个维度。

CPU 监控命令
CPU 是服务器的核心组件,监控其使用率、负载等指标对判断系统性能至关重要。
-
top 命令
top
是动态实时监控工具,默认每 3 秒刷新一次,展示系统中各个进程的资源占用情况,通过top
可以查看:- 第一行:系统时间、运行时长、登录用户数、系统负载(1分钟、5分钟、15分钟平均值)。
- 第二行:进程总数、运行中、睡眠、停止、僵死进程的数量。
- 第三、四行:CPU 和内存使用率。
- 下方区域:各进程的 PID、用户、CPU 占用率、内存占用率、命令等信息。
常用交互命令:P
按 CPU 使用率排序、M
按内存使用率排序、k
终止进程、q
退出。
-
htop 命令
htop
是top
的增强版,界面更友好,支持鼠标操作,可垂直或水平进程列表,实时显示线程和子进程,安装后直接输入htop
启动,通过功能键(如F1
帮助、F2
设置)进行个性化配置。 -
mpstat 命令
属于sysstat
包,用于监控 CPU 的详细状态,包括各核心的使用率、系统态、用户态、等待 I/O 等。(图片来源网络,侵删)mpstat -P ALL 1 5 # 监控所有核心,每秒刷新,共 5 次
输出结果中
%usr
表示用户态占用,%sys
表示内核态占用,%wa
表示等待 I/O 的时间。 -
uptime 命令
简单展示系统负载,即最近 1 分钟、5 分钟、15 分钟的平均进程数。16:30:25 up 10 days, 2:30, 2 users, load average: 0.10, 0.20, 0.15
,负载值超过 CPU 核心数时可能存在性能瓶颈。
内存监控命令
内存不足会导致系统变慢甚至服务崩溃,需重点关注使用率和缓存情况。
-
free 命令
显示系统内存使用情况,包括物理内存、交换空间(Swap),常用选项-h
以人类可读格式(如 KB、MB、GB)展示:(图片来源网络,侵删)free -h
输出中
total
为总内存,used
已用,free
空闲,buff/cache
为缓冲和缓存,available
为可用内存(包含可回收的缓存)。 -
vmstat 命令
虚存统计工具,可监控内存、进程、I/O 等信息。vmstat 1 5
每秒刷新,共 5 次,重点关注si
(Swap 入)和so
(Swap 出)值,若持续大于 0,说明内存不足,频繁换页会影响性能。 -
smem 命令
相比free
,smem
能更精确计算进程的实际内存占用(区分 PSS、USS 等指标),适合排查内存泄漏问题,安装后使用smem -t
查看进程内存占比表格。
磁盘监控命令
磁盘空间不足或 I/O 性能问题会导致服务异常,需定期检查磁盘使用率和 I/O 性能。
-
df 命令
查看文件系统磁盘空间使用情况,-h
选项人性化显示:df -h
输出包含文件系统、总容量、已用、可用、使用率及挂载点,重点关注使用率超过 80% 的分区。
-
du 命令
统计目录或文件占用的磁盘空间,-sh
查看指定目录总大小:du -sh /var/log # 查看 /var/log 目录大小
结合
sort
命令可快速定位大文件:du -sh /* | sort -hr
,按大小降序显示根目录下各文件/文件夹大小。 -
iostat 命令
属于sysstat
包,监控磁盘 I/O 性能,包括设备读写速率、I/O 请求队列长度等。iostat -dx 1 5
显示设备扩展统计,每秒刷新,%util
表示磁盘 I/O 繁忙度,若持续超过 70%,可能存在 I/O 瓶颈。 -
iotop 命令
类似top
的磁盘 I 监控工具,实时显示各进程的磁盘读写速度,安装后使用sudo iotop
启动,按o
只显示有 I/O 操作的进程。
网络监控命令
网络流量异常可能预示安全攻击或服务问题,需监控带宽使用、连接状态等。
-
ss 命令
替代传统的netstat
,更快地显示套接字连接信息,常用选项:ss -tuln # 显示所有监听 TCP(-t)、UDP(-u)端口,不解析域名(-n) ss -an | grep ESTAB | wc -l # 统计当前 ESTABLISHED 连接数
-
iftop 命令
实时监控网络带宽使用情况,显示各主机之间的流量,安装后使用sudo iftop -i eth0
指定网卡,按n
显示主机 IP,按P
按流量排序。 -
nethogs 命令
按进程监控网络带宽,可快速定位占用高带宽的进程,安装后使用sudo nethogs
,按q
退出。 -
ping 命令
测试网络连通性,ping -c 4 baidu.com
发送 4 个数据包,统计往返时间(RTT)和丢包率,判断网络延迟和稳定性。
系统综合监控工具
-
dstat 命令
整合了vmstat
、iostat
、netstat
等功能,可同时监控 CPU、内存、磁盘、网络、进程等资源,dstat -tcmndry 1
显示时间戳、CPU、内存、磁盘、网络、系统、CPU 使用率,每秒刷新。 -
glances 命令
跨平台监控工具,界面直观,通过颜色标注状态(绿色正常、红色警告),支持插件扩展,安装后运行glances
,按a
查看所有信息,按q
退出。
自动化监控与日志
通过 cron
定时执行监控脚本,结合 grep
、awk
分析日志(如 /var/log/messages
、/var/log/syslog
),可及时发现异常,每小时检查磁盘使用率并报警:
0 * * * * df -h | awk 'NR>1 && int($5) > 80 {print "磁盘空间不足: "$6" 使用率 "$5}' | mail -s "磁盘告警" admin@example.com
相关问答 FAQs
Q1:如何快速定位导致 CPU 占用过高的进程?
A:可通过 top -p <PID>
或 htop
找到 CPU 占用率最高的进程,记录其 PID;若为 Java 进程,可结合 jstack <PID> | grep <线程ID>
分析线程堆栈,定位具体代码问题;也可使用 pidstat -p <PID> -t 1
查看该进程各线程的 CPU 使用情况。
Q2:Linux 服务器内存持续升高,如何判断是否内存泄漏?
A:首先使用 free -h
观察可用内存(available)是否持续减少,buff/cache
是否不断增长;通过 smem -t
查看进程内存占用,定位可疑进程;进一步使用 cat /proc/<PID>/status
查看进程的 VmRSS(实际物理内存占用)和 VmSize(虚拟内存占用),若两者持续增长且不释放,可能存在内存泄漏;可通过 valgrind
工具(如 valgrind --leak-check=full ./程序
)对程序进行内存泄漏检测。