在 Linux 中查询最耗费 CPU 资源的前 10 个进程的常用脚本
方法一使用ps命令推荐最通用#!/bin/bash # 查看CPU占用最高的10个进程 ps aux --sort-%cpu | head -n 11 | tail -n 10或者更详细的版本#!/bin/bash echo CPU使用率最高的10个进程 printf %-10s %-10s %-10s %-8s %s\n PID USER CPU% MEM% COMMAND ps aux --sort-%cpu | head -n 11 | tail -n 10 | awk {printf %-10s %-10s %-10s %-8s , $2, $1, $3, $4; for(i11;iNF;i) printf %s , $i; print }方法二使用top命令非交互式#!/bin/bash # 非交互模式下获取前10个CPU占用最高的进程 top -bn1 -o %CPU | head -n 17 | tail -n 10方法三实时动态监控脚本#!/bin/bash # 每隔3秒刷新一次显示CPU占用前10的进程 while true; do clear echo $(date %Y-%m-%d %H:%M:%S) CPU占用Top10 ps aux --sort-%cpu | head -n 11 echo sleep 3 done方法四保存到文件并高亮显示#!/bin/bash # 保存到日志文件并显示结果 LOG_FILE/tmp/top_cpu_processes.log { echo 时间: $(date) echo ps aux --sort-%cpu | head -n 11 echo } $LOG_FILE # 显示带颜色输出 ps aux --sort-%cpu | head -n 11 | awk NR1 {print \033[1;34m $0 \033[0m; next} { if ($3 50) print \033[1;31m $0 \033[0m # 红色CPU50% else if ($3 20) print \033[1;33m $0 \033[0m # 黄色CPU20% else print \033[1;32m $0 \033[0m # 绿色CPU20% } echo 日志已保存到: $LOG_FILE输出字段说明字段含义PID进程IDUSER运行进程的用户%CPUCPU使用率%MEM内存使用率VSZ虚拟内存大小KBRSS常驻内存大小KBTTY终端STAT进程状态START启动时间TIMECPU时间COMMAND进程命令/程序名使用建议快速查看直接使用命令ps aux --sort-%cpu | head -n 11排查问题使用方法四高亮显示可以更快定位异常进程持续监控使用方法三配合nohup或screen后台运行如果需要进一步分析特定进程如查看线程详情可以使用pidstat -t -p PID或top -H -p PID