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 awk
declaración. Mi variable $vGRP
es una expresión regular. ¿Cómo pruebo si $2
está dentro $vGRP
? Si es así, esto puede cortar una de mis grep
llamadas.
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, bash
quiero awk
verificar 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 awk
no lee variables externas.
Respuesta1
Al parecer, reinventando la rueda.
ps -o pid,pcpu -p $(pgrep "$vPNAME")