Linux系统监控命令是运维人员和系统管理员的核心工具集,其设计目标围绕高效性、灵活性和实时性展开。这类命令通过文本化界面提供系统资源使用、进程状态、网络活动等关键信息,帮助用户快速定位异常并优化性能。与传统图形化监控工具相比,Linux监控命令具有轻量级、低开销、可脚本化等优势,尤其适合服务器集群和远程运维场景。
从技术架构角度看,这些命令分为三类:第一类是基础工具(如ps、top),直接读取/proc等虚拟文件系统数据;第二类是统计分析工具(如vmstat、iostat),通过定时采样生成汇总报告;第三类是网络专用工具(如netstat、ss),聚焦TCP/UDP连接和接口状态。值得注意的是,现代Linux发行版普遍采用systemd作为初始化系统,部分传统命令(如service)逐渐被systemctl替代,但底层监控原理保持不变。
在实际使用中,命令组合是高级玩法。例如ps -ef | grep java
可筛选Java进程,du -sh /* | sort -h
能快速定位最大目录。熟练掌握管道(|)、重定向(>)、条件过滤等操作符,可将多个简单命令串联成复杂监控流程。然而,命令行监控也存在局限性:实时性不如GUI工具直观,历史数据需配合脚本存储,多维度分析需要人工组合命令。
一、进程管理与调试
进程监控是Linux系统管理的核心环节,涉及进程状态查询、优先级调整、信号传递等操作。以下表格对比了主要进程管理命令:
命令 | 功能特性 | 典型参数 | 适用场景 |
---|---|---|---|
ps | 静态进程快照,支持自定义字段 | -ef(全格式)、-aux(详细模式) | 抓取特定时刻进程状态 |
top | 动态刷新,交互式操作 | -d 3(3秒刷新)、-p PID | 持续监控活跃进程 |
htop | 可视化界面,树状视图 | F4(树状切换)、F9(杀掉进程) | 新手友好的交互监控 |
pgrep/pkill | 基于模式匹配的进程操作 | -f(全名匹配)、-u USER | 批量过滤/终止进程 |
ps
命令通过-e
参数可显示所有进程,结合--forest
选项能呈现进程树。top
的交互界面支持M
键按内存排序,1
键显示单个CPU核心使用率。htop
相比top增加颜色标记(高负载进程红色),支持垂直/水平滚动查看完整命令行。
二、内存与交换分区监控
内存监控需关注物理内存、交换分区、缓存/缓冲区的使用情况。下表展示内存相关命令对比:
命令 | 数据维度 | 输出特点 | 扩展功能 |
---|---|---|---|
free | 总量/使用量/空闲量 | 简洁数值型报表 | -m(MB单位)、-s 5(定时刷新) |
vmstat | 进程/内存/分页/IO | 时间序列统计 | -d(禁用磁盘统计)、-S MB |
slabtop | 内核缓存分配 | 对象级内存消耗 | -o(按对象排序) |
dropwatch | 内核缓冲区丢弃 | 实时监测丢包 | -m(多线程模式) |
free -h
添加人类可读单位,vmstat 2 5
每2秒采样5次。当swpd
列值持续升高,表明物理内存不足导致频繁交换。slabtop
显示内核各缓存对象(如dns_resolver)的分配情况,帮助诊断内存泄漏问题。
三、存储与文件系统监控
磁盘监控涵盖容量使用、I/O性能、文件系统健康等多个层面。以下命令形成完整监控链条:
命令 | 监控重点 | 关键参数 | 输出特征 |
---|---|---|---|
df | 文件系统使用率 | -h(人类可读)、-T(类型) | 百分比+挂载点 |
du | 目录磁盘占用 | -s(汇总)、-d 1(一级深度) | 递归计算文件大小 |
iostat | 磁盘I/O性能 | -d(设备统计)、-x(扩展统计) | tps/KB/s/await指标 |
lsof | 打开文件追踪 | -i(网络文件)、-n(禁止解析IP) | 进程PID+文件路径 |
df -Th
可同时显示文件系统类型和使用率,iostat -mx 2 3
每2秒采样3次并显示设备利用率。当%util
接近100%时,表明I/O子系统过载。lsof +D /var/log
可快速定位日志目录被哪些进程占用。
四、网络状态与连接监控
网络监控需要同时关注接口状态、协议分布、连接详情等信息。以下表格对比网络监控命令:
命令 | 功能侧重 | 常用选项 | 输出特点 |
---|---|---|---|
ifconfig | 接口配置信息 | -a(全部接口)、eth0 | IP/MAC/MTU/RX/TX包数 |
ip | 现代化接口管理 | addr(地址)、link(状态) | 彩色标记+路由信息 |
netstat | 协议统计与连接 | -tulnp(全面参数) | 端口监听+TCP状态 |
ss | 高效连接查看 | -tul(简化版netstat) | 无LADDR状态下更快速 |
netstat -ntup
可显示所有TCP连接及其归属进程,而ss -H -a
以更高效率完成相同任务。ifconfig eth0 | grep "inet"
可快速提取指定接口的IP地址。现代系统推荐使用ip link
替代ifconfig查看接口状态。
五、系统负载与性能分析
系统级性能监控需要综合CPU、内存、I/O等多维度数据。以下工具提供不同视角的分析:
工具 | 数据采集 | 核心指标 | 适用场景 |
---|---|---|---|
uptime | 系统平均负载 | 1/5/15分钟负载值 | 快速评估整体压力 |
sar | 历史数据记录 | CPU%/runq/tps | 长期趋势分析 |
mpstat | CPU细分统计 | all/0/1 CPU使用率 | 多核CPU性能分析 |
pidstat | 进程级资源消耗 | %CPU/%MEM/COMMAND | 定位资源消耗大户 |
sar -u 1 5
每秒采样5次CPU利用率,mpstat -P ALL 2
显示每个CPU核心的使用率。当%idle
持续低于10%,通常意味着CPU过载。pidstat -u -p $(pgrep java)
可监控特定进程的CPU消耗。
六、日志与审计跟踪
日志系统是故障排查的重要依据,需掌握日志查看、过滤、转发等技能:
命令/工具 | 功能特性 | 典型用法 | 注意事项 |
---|---|---|---|
tail/head | 快速查看文件两端 | tail -f /var/log/syslog | 实时跟踪新增日志 |
less/more | 大文件分页查看 | <filename /dev/input/mice | 避免直接cat大日志文件 |
grep/egrep | 文本模式匹配 | grep 'ERROR' /var/log/*.log | 注意区分大小写(-i) |
journalctl | systemd日志管理 | -u nginx.service -f | 需熟悉unit命名规则 |
journalctl --since "1 hour ago" -p err
可提取最近一小时的错误日志。对于分割日志文件,可使用ls -ltr /var/log/httpd-*.log | xargs tail -n 100
查看最新100行。日志压缩文件需先通过zgrep
进行检索。
七、硬件信息获取
硬件监控命令帮助获取服务器物理规格和状态信息:
命令 | 信息类型 | 输出示例 | 特殊用途 |
---|---|---|---|
lshw | 硬件拓扑结构 | CPU/Memory/Network/Disk | -short(简明模式) |
dmidecode | BIOS/DMI数据 | 制造商/序列号/BIOS版本 | <system>级别需root权限 |
发表评论