Eu tenho um comando que executo para tentar listar os PIDs e seu uso de CPU. Estou usando ps -ef
.
Existe uma maneira (melhor) de fazer isso usando top
? Além disso, eu tinha uma pergunta sobre minha awk
declaração. Minha variável $vGRP
é uma expressão regular. Como faço para testar se $2
está dentro $vGRP
? Nesse caso, isso pode interromper uma das minhas grep
ligações.
Inicialmente escrevi isso como uma "linha única" que posso simplesmente colar em uma sessão de terminal, então, perdoe a formatação:
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, eu gostaria de algo um pouco mais limpo, mas não estou tão familiarizado bash
e quero awk
verificar o campo 2 na string, vGRP
se possível.
ps -ef | awk -v vGRP="$vGRP" '$vGRP~/$2/ {print $2, "\t", $4 }';
No entanto, isso não fornece saída porque presumo que awk
não lê variáveis externas.
Responder1
Aparentemente reinventando a roda.
ps -o pid,pcpu -p $(pgrep "$vPNAME")