以下整理了常用的Linux监控命令,按功能分类并附使用示例:
一、系统概览信息
|
命令 |
功能 |
示例输出 |
|
hostname |
查看主机名 |
web-server-01 |
|
uname -a |
系统内核信息 |
Linux db01 5.4.0-131-generic #148-Ubuntu SMP |
|
cat /etc/os-release |
操作系统版本 |
PRETTY_NAME=”Ubuntu 20.04.4 LTS” |
|
uptime |
运行时间与负载 |
18:05:01 up 45 days, 3:21, 1 user, load average: 0.08, 0.03, 0.05 |
|
date |
系统时间 |
Thu Aug 18 18:05:24 CST 2023 |
二、CPU监控
|
命令 |
功能 |
关键指标 |
|
lscpu |
CPU架构信息 |
核心数/线程数/型号 |
|
top -bn1 |
实时CPU使用率 |
%Cpu(s): 12.3 us, 6.2 sy |
|
mpstat -P ALL |
多核CPU详细统计 |
各核心的user/sys/idle占比 |
|
sar -u 2 5 |
周期性CPU采样 |
平均使用率趋势 |
|
vmstat 1 |
综合性能监控 |
r(运行队列)/b(阻塞进程) |
高级技巧:
# 按CPU使用率排序进程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 10
三、内存监控
|
命令 |
功能 |
关键指标 |
|
free -m |
内存总量与使用 |
Mem: 32042 29582 2460 |
|
vmstat -s |
详细内存统计 |
active/inactive memory |
|
cat /proc/meminfo |
内存详细信息 |
MemTotal/Cached/Swap |
|
slabtop |
内核slab缓存 |
内核对象缓存使用 |
内存泄漏排查:
# 监控进程内存变化
watch -n 1 "ps -eo pid,cmd,rss --sort=-rss | head -n 5"
四、磁盘监控
|
命令 |
功能 |
关键指标 |
|
df -h |
磁盘空间使用 |
/dev/sda1 98G 45G 48G 49% / |
|
iostat -dx 2 |
磁盘IO性能 |
await(ms)/util(%) |
|
iotop |
实时IO进程 |
进程级读写速率 |
|
du -sh /* | sort -hr |
目录大小排序 |
快速定位大文件 |
|
lsblk |
块设备信息 |
磁盘分区/挂载点 |
IO瓶颈诊断:
# 定位高IO进程
pidstat -d 1
五、网络监控
|
命令 |
功能 |
关键指标 |
|
ifconfig/ip addr |
网络接口信息 |
IP地址/RX/TX包量 |
|
netstat -tulnp |
端口监听状态 |
服务端口/PID |
|
ss -s |
连接统计 |
Total: 987 (kernel 0) |
|
tcpdump -i eth0 |
网络包捕获 |
实时流量分析 |
|
iftop -P |
带宽使用排名 |
主机级流量统计 |
连接分析:
# 查看ESTABLISHED连接数
netstat -an | grep ESTABLISHED | wc -l
六、进程与服务监控
|
命令 |
功能 |
关键指标 |
|
ps aux |
进程列表 |
CPU/MEM使用率 |
|
pidstat 1 |
进程资源统计 |
%CPU/%MEM |
|
systemctl status |
服务状态 |
Active(running) |
|
journalctl -u nginx |
服务日志 |
服务运行日志 |
|
lsof -p <PID> |
进程打开文件 |
文件描述符 |
进程树查看:
# 显示进程树关系
pstree -ap
七、高级监控工具
- 实时监控面板
- htop:增强版top(支持鼠标操作)
- glances:全能监控面板(需安装)
- nmon:专业性能监控工具
- 日志分析
- # 查看包含ERROR的最新日志
tail -f /var/log/syslog | grep -i error# 统计404错误次数
awk '$9==404 {print $7}' access.log | sort | uniq -c | sort -nr - 性能分析
- perf top:CPU热点函数分析
- strace -p <PID>:系统调用跟踪
- dstat:综合性能统计工具
八、最佳实践提议
- 命令组合使用
- # 单行获取关键指标
echo “Load:$(uptime | awk -F'load average: ' '{print $2}') | Mem:$(free -m | awk '/Mem/{print $3″/”$2″MB”}')” - 监控自动化
- 使用cron定期收集指标
- 通过tee同时输出到屏幕和文件
- 编写脚本格式化输出(如本文示例)
- 安全注意事项
- 避免在生产环境直接修改配置
- 使用nohup执行长时间任务
- 敏感命令添加-i交互确认
运维箴言:掌握这些命令如同获得系统”听诊器”,但真正的价值在于理解数据背后的意义。提议建立自己的命令手册,定期练习形成肌肉记忆。
通过熟练使用这些命令,运维工程师可以快速诊断系统瓶颈,有效处理故障,保障业务稳定运行。记住:好的运维不是救火队员,而是通过监控提前发现隐患的守护者。

收藏了,感谢分享