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 ./程序)对程序进行内存泄漏检测。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/391851.html<





