这张图就是 `top` 命令的输出,是 Linux 运维每天**最常用、最重要**的巡检画面之一。我来给你**逐行、详细、实用**地讲解怎么看,以及日常巡检该怎么做。 ### 一、top 命令整体结构解析(按图中从上到下) #### 1. **第一行:系统概览** ```bash top - 20:35:24 up 7:35, 3 users, load average: 2.03, 1.83, 1.67 ``` - **当前时间**:20:35:24 - **up 7:35**:系统已经运行了 7 小时 35 分钟 - **3 users**:当前有 3 个登录用户 - **load average: 2.03, 1.83, 1.67**:**非常重要!** - 分别代表 **1分钟、5分钟、15分钟** 的系统平均负载。 - **判断标准**(以 CPU 核数为准): - 这台机器大概是 **4核**(因为负载在 2 左右还算正常) - 负载 < 核数 = 正常 - 负载 > 核数 × 0.7 开始注意 - 负载 > 核数 × 1.5 属于较高 - 负载 > 核数 × 2.0 非常危险 #### 2. **第二行:任务(进程)统计** ```bash Tasks: 768 total, 1 running, 767 sleeping, 0 stopped, 0 zombie ``` - 总进程 768 个,只有 1 个在真正运行,其余都在睡眠,**比较健康**。 - **zombie(僵尸进程)** 如果 >0 要注意。 #### 3. **第三行:CPU 使用情况(最重要之一)** ```bash %Cpu(s): 35.7 us, 21.9 sy, 0.0 ni, 42.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ``` - **us (user)**: 35.7% —— 用户进程(你的业务、python、redis等)占用 - **sy (system)**: 21.9% —— 内核态占用(较高,说明可能有频繁的系统调用或 IO) - **id (idle)**: 42.4% —— 空闲率(剩下约 42% 空闲,还算可以) - **wa (iowait)**: 0.0% —— **IO等待**,为 0 很好,说明磁盘没有严重瓶颈 - **st (steal)**: 0.0% —— 虚拟化被偷走的 CPU(云服务器常见),0 很好 **总结**:当前 CPU 总体不算太忙,但 **sy 偏高**,值得关注。 #### 4. **内存和 Swap(非常关键!)** ```bash MiB Mem : 3829.6 total, 122.1 free, 3287.5 used, 715.7 buff/cache MiB Swap: 3151.0 total, 0.2 free, 3150.8 used, 542.2 avail Mem ``` **这台机器内存情况很危险!** - 总内存只有 **3.8GB**(很小) - 可用物理内存只剩 **122MB**(极低!) - **Swap 已几乎用满**(3.15GB/3.15GB) - **avail Mem 542MB**:这是 Linux 真正还能给新进程用的内存 **结论**:这台机器**严重缺内存**,已经在狂用 Swap(会非常慢)。这是典型的性能问题根源。 #### 5. **进程列表(最下面)** 重点看前几行: - **PID 655845** 的 **python** 进程:**%CPU 91.6%** —— 当前罪魁祸首,吃掉了几乎所有 CPU! - 下面有几个 redis-server、mysqld、docker 相关进程。 --- ### 二、日常巡检 & 监控推荐做法(建议你直接照着做) #### **1. 快速巡检命令(推荐每天执行)** ```bash # 1. 最重要的一条(就是你这张图) top # 按 q 退出,按 1 显示每个CPU核,按 Shift+P 按CPU排序 # 2. 内存详细情况 free -h # 3. 磁盘使用 df -hT du -sh /* | sort -hr | head -10 # 查看哪个目录最大 # 4. 磁盘 IO iotop -oP # 按 o 只看有IO的进程 # 5. 端口和服务 ss -tlnp | head -20 # 6. 最近日志报错 tail -n 100 /var/log/syslog | grep -E 'error|fail|crit' journalctl -p 3 -xe --no-pager # systemd 错误日志 ``` #### **2. 更好的监控工具(推荐安装)** ```bash # 安装更好用的替代品 apt install htop iotop iftop nmon -y # 使用: htop # 比 top 好用多了(支持鼠标、颜色、树状) ``` **生产环境建议**:部署 **Prometheus + Grafana** 做图形化监控(长期方案)。 --- ### 三、针对这张图,你现在应该怎么处理? 1. **立刻处理**:那个吃 91.6% CPU 的 python 进程 ```bash top -p 655845 # 只看这个进程 # 或者 strace -p 655845 # 看它在干什么(高级) ps -p 655845 -o pid,ppid,cmd ``` 2. **内存紧急处理**: - 杀掉不重要的大内存进程(慎重) - 增加 Swap(临时) - 最根本:**升级内存** 或 **优化程序** 3. **后续监控建议**: - 用 `htop` 代替 `top` - 设置 `htop` 按 `F2` → Columns → 添加 `PERCENT_MEM` 等 - 写个简单巡检脚本每天早上发到企业微信/钉钉 --- **想更进一步吗?** 告诉我你的情况,我可以给你: - 一份**完整的日常巡检脚本**(Shell) - `htop` 使用技巧 - 如何设置 **Prometheus** 监控 - 如何分析这个 python 进程为什么这么吃资源 现在你对这张图的理解清楚了吗?有什么具体部分还想深入了解?