PID와 해당 CPU 사용량을 나열하기 위해 실행하는 명령이 있습니다. 을 사용하고 있습니다 ps -ef
.
을 사용하여 이 작업을 수행하는 (더 나은) 방법이 있습니까 top
? 또한, 내 발언에 대해 질문이 있었습니다 awk
. 내 변수는 $vGRP
정규식입니다. $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")