PID とその CPU 使用率を一覧表示するために実行するコマンドがあります。 を使用していますps -ef
。
を使用してこれを行う (より良い) 方法はありますかtop
? また、ステートメントについて質問がありますawk
。 変数は正規表現です。が に含まれている$vGRP
かどうかをテストするにはどうすればよいですか? もしそうなら、これにより呼び出しの 1 つを省略できます。$2
$vGRP
grep
当初、私はこれをターミナル セッションに貼り付けることができる「ワンライナー」として書いたので、フォーマットについてはご容赦ください。
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
思います。awk
vGRP
ps -ef | awk -v vGRP="$vGRP" '$vGRP~/$2/ {print $2, "\t", $4 }';
awk
ただし、外部変数を読み取らないと想定しているため、出力は提供されません。
答え1
どうやら車輪の再発明のようです。
ps -o pid,pcpu -p $(pgrep "$vPNAME")