AWK(Ubuntu)를 사용하여 CPU 사용량으로 프로세스 ID 찾기

AWK(Ubuntu)를 사용하여 CPU 사용량으로 프로세스 ID 찾기

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

이상적으로는 좀 더 깔끔한 것을 원하지만 그다지 익숙하지 않아서 bash가능하다면 awk문자열의 필드 2를 확인 하고 싶습니다 vGRP.

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

awk그러나 이것은 외부 변수를 읽지 않는다고 가정하므로 출력을 제공하지 않습니다 .

답변1

바퀴를 명확하게 재창조합니다.

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

관련 정보