Localizar un ID de proceso por uso de CPU (Ubuntu) usando AWK

Localizar un ID de proceso por uso de CPU (Ubuntu) usando AWK

Tengo un comando que ejecuto para intentar enumerar los PID y su uso de CPU. Estoy usando ps -ef.

¿Existe una (mejor) manera de hacer esto usando top? Además, tenía una pregunta sobre mi awkdeclaración. Mi variable $vGRPes una expresión regular. ¿Cómo pruebo si $2está dentro $vGRP? Si es así, esto puede cortar una de mis grepllamadas.

Inicialmente escribí esto como una "línea única" que puedo pegar en una sesión de terminal, así que perdone el formato:

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

Idealmente, me gustaría algo un poco más limpio, pero no estoy tan familiarizado con él y, si es posible, bashquiero awkverificar el campo 2 en la cadena .vGRP

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

Sin embargo, esto no proporciona resultados porque supongo que awkno lee variables externas.

Respuesta1

Al parecer, reinventando la rueda.

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

información relacionada