Linuxで異なる運行状態のプロセス個数とプロセス名を統計する

シェル機能:Linuxの中で異なる運行状態のプロセス数と相応の具体的なプロセス
シェル用法:./cnt_zombie.sh 「am/pc」 「プロセス運行状態:Z/R/S/SS/SW/T/…」
使用サンプル:./cnt_zombie.sh arm Z; ./cnt_zobiem.sh pc R;

ファイル名:cnt_zombie.sh
#! /bin/sh

IFS_old=$IFS
IFS=$’\n’
file="zombie.txt"
num=0
proc_name=
self="cnt_zombie.sh"

while test true
do
if [ $1 = “arm" ]
then
list="`ps -w|grep $2|grep -v grep|grep -v $self`"
elif [ $1 = “pc" ]
then
list="`ps axu|grep -w $2|grep -v grep|grep -v $self`"
fi

if [ “x$list" != “x" ]
then
x=
#echo “list: $list"
#num=`echo $list|wc -l`
#echo “num: $num"
else
continue
fi

if [ $1 = “pc" ]
then
pos=`ps axu|grep PID|grep -bo COMMAND|cut -d “:" -f 1`
elif [ $1 = “arm" ]
then
pos=26
fi

num=0
for line in $list
do
num=$[$num+1]
if [ -n $proc_name ]
then
proc_name="$proc_name\n\t`echo $line|cut -c $pos- `"
else
proc_name="`echo $line|cut -c $pos- `"
fi
done

echo -e “process conut: $num, process list:$proc_name\n" >> $file
sleep 3
done

Source

Posted by arkgame