PIDとそのCPU使用量を一覧表示するコマンドを実行しました。を使用していますps -ef
。
これを行うために使用できる(より良い)方法はありますかtop
?また、私の声明にも問題がありますawk
。私の変数は$vGRP
正規表現です。それが$2
存在するかどうかをテストする方法は何ですか$vGRP
?もしそうなら、私のgrep
通貨の1つが壊れる可能性があります。
もともとはターミナルセッションに貼り付けられるように「一行」で作成しましたので、形式をご了承ください。
clear;
printf "Please enter process name: "; read vPNAME;
for i in $(pgrep "$vPNAME");
do vGRP="$vGRP$i|";
done;
vGRP="${vGRP::-1}";
printf "Seaching for processes: $vGRP\n PID\tUSAGE\n-------\t-------\n";
ps -ef | egrep "$vGRP" | egrep "$vPNAME" | awk '{print $2, "\t", $4 }';
vGRP=""; vPNAME="";
理想的にはもう少しきれいにしたいのですが、あまり慣れていないので、可能であれば文字列bash
のawk
フィールド2を確認したいと思いますvGRP
。
ps -ef | awk -v vGRP="$vGRP" '$vGRP~/$2/ {print $2, "\t", $4 }';
awk
ただし、これは外部変数を読み取らないと仮定しているため、出力を提供しません。
答え1
ホイールをはっきりと再作成します。
ps -o pid,pcpu -p $(pgrep "$vPNAME")