AWK(Ubuntu)を使用してCPU使用率でプロセスIDを見つける

AWK(Ubuntu)を使用してCPU使用率でプロセスIDを見つける

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="";

理想的にはもう少しきれいにしたいのですが、あまり慣れていないので、可能であれば文字列bashawkフィールド2を確認したいと思いますvGRP

ps -ef | awk -v vGRP="$vGRP" '$vGRP~/$2/ {print $2, "\t", $4 }';

awkただし、これは外部変数を読み取らないと仮定しているため、出力を提供しません。

答え1

ホイールをはっきりと再作成します。

ps -o pid,pcpu -p $(pgrep "$vPNAME")

関連情報