常见命令-资源查看-top命令实践
目录
1. 快速诊断系统负载过高
场景:服务器响应变慢,怀疑 CPU 或内存资源耗尽。
操作:
top
• 关键指标:
• load average(1/5/15分钟平均负载):若超过 CPU 核数,可能资源紧张。
• %CPU:观察是否有进程长期占用过高 CPU(如 90%+)。
• %MEM:检查是否有进程消耗大量内存(可能导致 Swap 使用激增)。
2. 定位异常进程
场景:某个未知进程导致系统卡顿,需快速找到并终止。
操作:
top -o %CPU   # 按 CPU 使用率排序
top -o %MEM   # 按内存使用率排序
• 步骤:
- 按 P(CPU)或M(内存)手动排序。
- 记录异常进程的 PID。
- 使用 kill -9 PID终止进程(谨慎操作)。
3. 监控内存泄漏
场景:怀疑应用存在内存泄漏,需持续观察内存变化。
操作:
top -d 5 -p <PID>   # 每5秒刷新,监控特定进程
• 关注点:
• RES(实际内存占用)是否随时间持续增长。
• VIRT(虚拟内存)与 RES 的差异是否异常。
4. 分析多核 CPU 使用情况
场景:检查 CPU 是否均匀负载,是否存在单核瓶颈。
操作:
top → 按 `1` 展开所有 CPU 核心状态
• 输出示例:
%Cpu0  : 20.3%us,  5.6%sy, ...
%Cpu1  : 95.0%us,  2.0%sy, ...  # 第2个核心满载
5. 检查僵尸进程(Zombie)
场景:系统存在僵尸进程,需清理。
操作:
top → 观察 `S` 列(进程状态)中的 `Z` 标记
• 处理:
• ps -ef找到父进程 PID(PPID),重启父进程以释放僵尸。
6. 监控用户专属进程
场景:仅关注特定用户(如 nginx)的进程资源使用。
操作:
top -u nginx
7. 批处理模式(自动化脚本)
场景:将 top 数据导出到文件供后续分析。
操作:
top -b -n 3 > top_log.txt   # 输出3次快照到文件
8. 交互命令增强分析
• 按 t:切换 CPU 和负载图形显示。
• 按 c:显示进程的完整命令行。
• 按 V:以树形结构显示进程父子关系。
注意事项
• 高亮警告:若发现 swap 频繁使用(Si/So 高),需优先排查内存瓶颈。
• 替代工具:对更友好的界面可使用 htop,或结合 vmstat/iostat 综合分析。
通过灵活运用 top 的排序、过滤和监控功能,运维人员可以高效定位资源瓶颈和异常进程,保障系统稳定性。
9. 运维场景速查表
| 场景 | 操作指令/快捷键 | 关键指标 | 参考来源 | 
|---|---|---|---|
| 快速定位CPU瓶颈 | P键 | %CPU> 80% | |
| 内存泄漏排查 | M键 + 监控RES增长 | %MEM持续上升 | |
| 容器资源超限 | docker stats+top -p | RES接近cgroup限制 | |
| 僵尸进程清理 | ps -ef | grep defunct | Tasks行的zombie计数 | |
| 自动化性能采样 | top -b -n 10 -d 1 | 不交互间隔1秒输出10次停止 | 
10. 结果输出速查表
第一部分:顶部统计信息
| 字段 | 解释 | 
|---|---|
| top - 时间 | 当前系统时间(如 17:56:13)。 | 
| up 运行时间 | 系统已连续运行的总时间(如 161 days, 3:11)。 | 
| users | 当前登录系统的用户数(如 3 users)。 | 
| load average | 系统在1分钟、5分钟、15分钟内的平均负载(如 0.23, 0.37, 0.18)。单核CPU负载超过1表示超负荷,多核时需按“核数×0.7”判断是否正常。 | 
| Tasks | 进程总数及状态: - total:总进程数- running:运行中- sleeping:休眠- stopped:停止- zombie:僵尸进程(若非0需检查原因)。 | 
| %Cpu(s) | CPU使用情况: - us:用户空间占用(应用程序)- sy:内核空间占用(系统调用)- ni:调整优先级的进程占用- id:空闲CPU百分比(高空闲但系统卡顿可能因I/O或内存不足)- wa:等待I/O时间(高值表示磁盘瓶颈)- hi/si:硬件/软件中断占用- st:虚拟化环境中被其他虚拟机占用的时间。 | 
| Mem | 物理内存使用: - total:总量- used:已用(含缓存)- free:空闲- buff/cache:缓冲区/缓存(可被快速释放)。 | 
| Swap | 交换空间使用: - total:总量(建议为物理内存的2倍)- used:已用(频繁使用可能需扩展内存)- free:空闲。 | 
第二部分:进程信息
| 字段 | 解释 | 
|---|---|
| PID | 进程的唯一标识符,用于跟踪或终止进程。 | 
| USER | 进程所有者,显示运行该进程的用户账号。 | 
| PR | 进程优先级( rt表示实时进程,优先级高于普通进程)。 | 
| NI | Nice值(范围-20到19),负值表示高优先级,正值表示低优先级。 | 
| VIRT | 进程使用的虚拟内存总量(包含共享库和未映射的内存,单位KB),公式为 VIRT = SWAP + RES。 | 
| RES | 进程实际占用的物理内存(单位KB),公式为 RES = CODE + DATA。 | 
| SHR | 进程使用的共享内存(单位KB),多个进程共享同一库或资源时显示。 | 
| S | 进程状态: - R:运行中- S:休眠(可中断)- D:不可中断休眠(通常等待I/O)- Z:僵尸进程(需手动清理)- T:停止或被跟踪。 | 
| %CPU | 进程占用的CPU百分比(多核时可能超过100%,如400%表示占满4核)。 | 
| %MEM | 进程占用的物理内存百分比,用于识别内存密集型进程。 | 
| TIME+ | 进程累计使用的CPU时间(格式: 分:秒.百分秒),反映进程对CPU的长期占用情况。 | 
| COMMAND | 启动进程的命令名或完整路径(按 c键可切换显示模式)。 | 
    前事不忘,后事之师
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号