菜鸟科技网

Linux服务器监控命令有哪些常用?

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

Linux服务器监控命令有哪些常用?-图1
(图片来源网络,侵删)

CPU 监控命令

CPU 是服务器的核心组件,监控其使用率、负载等指标对判断系统性能至关重要。

  1. top 命令
    top 是动态实时监控工具,默认每 3 秒刷新一次,展示系统中各个进程的资源占用情况,通过 top 可以查看:

    • 第一行:系统时间、运行时长、登录用户数、系统负载(1分钟、5分钟、15分钟平均值)。
    • 第二行:进程总数、运行中、睡眠、停止、僵死进程的数量。
    • 第三、四行:CPU 和内存使用率。
    • 下方区域:各进程的 PID、用户、CPU 占用率、内存占用率、命令等信息。
      常用交互命令:P 按 CPU 使用率排序、M 按内存使用率排序、k 终止进程、q 退出。
  2. htop 命令
    htoptop 的增强版,界面更友好,支持鼠标操作,可垂直或水平进程列表,实时显示线程和子进程,安装后直接输入 htop 启动,通过功能键(如 F1 帮助、F2 设置)进行个性化配置。

  3. mpstat 命令
    属于 sysstat 包,用于监控 CPU 的详细状态,包括各核心的使用率、系统态、用户态、等待 I/O 等。

    Linux服务器监控命令有哪些常用?-图2
    (图片来源网络,侵删)
    mpstat -P ALL 1 5  # 监控所有核心,每秒刷新,共 5 次

    输出结果中 %usr 表示用户态占用,%sys 表示内核态占用,%wa 表示等待 I/O 的时间。

  4. uptime 命令
    简单展示系统负载,即最近 1 分钟、5 分钟、15 分钟的平均进程数。16:30:25 up 10 days, 2:30, 2 users, load average: 0.10, 0.20, 0.15,负载值超过 CPU 核心数时可能存在性能瓶颈。

内存监控命令

内存不足会导致系统变慢甚至服务崩溃,需重点关注使用率和缓存情况。

  1. free 命令
    显示系统内存使用情况,包括物理内存、交换空间(Swap),常用选项 -h 以人类可读格式(如 KB、MB、GB)展示:

    Linux服务器监控命令有哪些常用?-图3
    (图片来源网络,侵删)
    free -h

    输出中 total 为总内存,used 已用,free 空闲,buff/cache 为缓冲和缓存,available 为可用内存(包含可回收的缓存)。

  2. vmstat 命令
    虚存统计工具,可监控内存、进程、I/O 等信息。vmstat 1 5 每秒刷新,共 5 次,重点关注 si(Swap 入)和 so(Swap 出)值,若持续大于 0,说明内存不足,频繁换页会影响性能。

  3. smem 命令
    相比 freesmem 能更精确计算进程的实际内存占用(区分 PSS、USS 等指标),适合排查内存泄漏问题,安装后使用 smem -t 查看进程内存占比表格。

磁盘监控命令

磁盘空间不足或 I/O 性能问题会导致服务异常,需定期检查磁盘使用率和 I/O 性能。

  1. df 命令
    查看文件系统磁盘空间使用情况,-h 选项人性化显示:

    df -h

    输出包含文件系统、总容量、已用、可用、使用率及挂载点,重点关注使用率超过 80% 的分区。

  2. du 命令
    统计目录或文件占用的磁盘空间,-sh 查看指定目录总大小:

    du -sh /var/log  # 查看 /var/log 目录大小

    结合 sort 命令可快速定位大文件:du -sh /* | sort -hr,按大小降序显示根目录下各文件/文件夹大小。

  3. iostat 命令
    属于 sysstat 包,监控磁盘 I/O 性能,包括设备读写速率、I/O 请求队列长度等。iostat -dx 1 5 显示设备扩展统计,每秒刷新,%util 表示磁盘 I/O 繁忙度,若持续超过 70%,可能存在 I/O 瓶颈。

  4. iotop 命令
    类似 top 的磁盘 I 监控工具,实时显示各进程的磁盘读写速度,安装后使用 sudo iotop 启动,按 o 只显示有 I/O 操作的进程。

网络监控命令

网络流量异常可能预示安全攻击或服务问题,需监控带宽使用、连接状态等。

  1. ss 命令
    替代传统的 netstat,更快地显示套接字连接信息,常用选项:

    ss -tuln  # 显示所有监听 TCP(-t)、UDP(-u)端口,不解析域名(-n)
    ss -an | grep ESTAB | wc -l  # 统计当前 ESTABLISHED 连接数
  2. iftop 命令
    实时监控网络带宽使用情况,显示各主机之间的流量,安装后使用 sudo iftop -i eth0 指定网卡,按 n 显示主机 IP,按 P 按流量排序。

  3. nethogs 命令
    按进程监控网络带宽,可快速定位占用高带宽的进程,安装后使用 sudo nethogs,按 q 退出。

  4. ping 命令
    测试网络连通性,ping -c 4 baidu.com 发送 4 个数据包,统计往返时间(RTT)和丢包率,判断网络延迟和稳定性。

系统综合监控工具

  1. dstat 命令
    整合了 vmstatiostatnetstat 等功能,可同时监控 CPU、内存、磁盘、网络、进程等资源,dstat -tcmndry 1 显示时间戳、CPU、内存、磁盘、网络、系统、CPU 使用率,每秒刷新。

  2. glances 命令
    跨平台监控工具,界面直观,通过颜色标注状态(绿色正常、红色警告),支持插件扩展,安装后运行 glances,按 a 查看所有信息,按 q 退出。

自动化监控与日志

通过 cron 定时执行监控脚本,结合 grepawk 分析日志(如 /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 ./程序)对程序进行内存泄漏检测。

分享:
扫描分享到社交APP
上一篇
下一篇