topコマンドで負荷が高いプロセスを知りたい場合があります。
特に100%CPUを使ってしまうようなプロセスについて確認したい場合はどうすればいいでしょう。バッチモードがあるので、それを使うという方法が考えられます。awkやsedを組み合わせると、結構いけます。次の例では、100.0% を 1000へ置き換えて抽出しています。
top -b -n 1 | awk '{print $9 " " $1}' | sed 's/\.//' | \
grep -v "%CPU" | grep -v users | grep -v stopped | grep -v Cpu | \
grep -v buffers | grep -v cached|sort -r | \
head -1 > result.txt ; v=`cat result.txt | awk '{print $1}'`
grep -v "%CPU" | grep -v users | grep -v stopped | grep -v Cpu | \
grep -v buffers | grep -v cached|sort -r | \
head -1 > result.txt ; v=`cat result.txt | awk '{print $1}'`
if [ $v -eq 1000 ]; then
pid=`awk '{print $2}'`;
echo $pid;
fi
「詳解 シェルスクリプト」や「UNIXシェルスクリプトハンドブック」などで勉強してみると良いでしょう。
関連書籍: