使用top指令,获取CPU/内存最高的进程,或者获取CPU/内存大于指定阈值的进程。
获取CPU大于70的进程(根据CPU占用大小,由高到低排序):
top -b -d 1 -n 1 |awk '{ if (NR > 6) print }' |awk '{ if ($9 > 70) print $1, $2, $9, $10}' | sort -rn -k +3
获取内存大于70的进程(根据内存占用大小,由高到低排序):
top -b -d 1 -n 1 |awk '{ if (NR > 6) print }' |awk '{ if ($10 > 70) print $1, $2, $9, $10}' | sort -rn -k +4
说明:
if (NR > 6) print 由于top指令会显示一些汇总的信息,这里是将其排除掉。如下格式内容:
top - 14:23:57 up 40 days, 5:39, 2 users, load average: 0.01, 0.04, 0.00
Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.5%us, 0.1%sy, 0.0%ni, 98.8%id, 0.6%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 4051924k total, 3796920k used, 255004k free, 47248k buffers
Swap: 2097144k total, 88k used, 2097056k free, 1347244k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 10356 680 576 S 0.0 0.0 0:00.83 init
2 root RT -5 0 0 0 S 0.0 0.0 0:02.95 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
if ($10 > 70) print $1, $2, $9, $10 第10列的值(内存)大于70时,则输出第1/2/9/10列的值。
sort -rn -k +4 根据print $1, $2, $9, $10 结果中的第4列,进行倒序排序。
如果只需要最高的那一条记录,则在最后面加上 head -1即可。