一、命令
- top
-b 批处理模式,适合文本处理
-c 命令行,显示完整命令和程序名
-n 迭代次数,即捕获刷新次数
-o 指定排序的列,+或-表示降序或升序
-p 指定进程ID
- grep
-E 正则表达式,‘|’ 表示或
- awk
$0 完整行
$n 第n列
- read
读入数据到变量
- kill
杀掉进程
二、shell脚本
# 1. MyApp|YourApp|OtherApp 表示监控的进程名列表
# 2. $7>=99.0 表示第7列的值大于99%,top的列不一定相同,此处第7列为CPU占用率
# 3. while read procid 读入到变量procid
#!/bin/bash
while true
do
sleep 10
# MyApp
top -b -c -n 1 -o +%CPU | grep -E 'MyApp|YourApp|OtherApp' | awk '{if($7>=99.0) print $1}' | while read procid
do
echo $procid;
sleep 20
top -b -c -p $procid -n 1 -o +%CPU | grep -E 'MyApp|YourApp|OtherApp' | awk '{if($7>=99.0) print $1}' | while read killpid
do
echo kill process $killpid
kill -9 $killpid
done
done
done
三、总结
grep 、awk和read命令可以结合其它命令实现很多系统问题的处理,简单了解一下帮助很大。