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

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

PID とその CPU 使用率を一覧表示するために実行するコマンドがあります。 を使用していますps -ef

を使用してこれを行う (より良い) 方法はありますかtop? また、ステートメントについて質問がありますawk。 変数は正規表現です。が に含まれている$vGRPかどうかをテストするにはどうすればよいですか? もしそうなら、これにより呼び出しの 1 つを省略できます。$2$vGRPgrep

当初、私はこれをターミナル セッションに貼り付けることができる「ワンライナー」として書いたので、フォーマットについてはご容赦ください。

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

理想的には、もう少しクリーンなものが欲しいのですが、あまり詳しくないので、可能であれば文字列のフィールド 2 をチェックしたいとbash思います。awkvGRP

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

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

答え1

どうやら車輪の再発明のようです。

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

関連情報