경로/명령으로 현재 프로세스 CPU 사용량을 추출하여 콘솔에 인쇄하는 방법

경로/명령으로 현재 프로세스 CPU 사용량을 추출하여 콘솔에 인쇄하는 방법

프로세스 이름/경로별로 현재 프로세스 CPU/메모리 사용량을 가져와서 콘솔에 인쇄하고 싶습니다. 이 명령은 와 같은 연속적인 데이터 스트림을 제공하는 대신 숫자를 출력해야 합니다 ps.

ps -p PID작동하지 않습니다:

  1. 프로세스 번호가 없습니다. (프로세스 경로가 있습니다.)
  2. 현재 측정값을 콘솔에 한 번 인쇄하지 않습니다.

예를 들어 다음과 같아야 합니다.

$command -getCPU | grep processPath

답변1

제 생각에는 awk다음 명령을 사용하여 프로세스 이름에 대한 프로세서 및 메모리 사용량을 표시할 수 있다는 것입니다.

ps -C "PROCEES_NAME" -o %cpu,%mem,cmd

결과:

%CPU %MEM CMD
 0.0  0.2 /usr/bin/python3 completion.py
 0.0  0.1 /usr/bin/python3 lib/python/jedi/evaluate/compiled/subprocess/__main__.py lib/python

그런 다음 awk를 사용하여 첫 번째 줄을 삭제할 수 있습니다.

ps -C python3 -o %cpu,%mem,cmd | awk 'FNR > 1'

결과:

 0.0  0.2 /usr/bin/python3 completion.py
 0.0  0.1 /usr/bin/python3 lib/python/jedi/evaluate/compiled/subprocess/__main__.py lib/python

사용 횟수만 가져오고 다른 출력을 건너뛰려면 다음 명령을 사용할 수 있습니다.

ps -C "python3" -o %cpu,%mem,cmd | awk 'FNR > 1 {print $1,$2}'

결과:

0.0 0.2
0.0 0.1

$1첫 번째 줄이고 $2두 번째 줄입니다. 원하는 경우 삭제할 수 있습니다.

process_name을 사용하는 것은 나쁜 생각이며 PID를 사용하는 것이 더 좋습니다.

답변2

좋아, 나는 top과 ps에 대해 혼란스러워요. 다음 명령을 사용하여 원하는 것을 얻을 수 있었습니다.

$ps aux | grep <processName> | awk '{print $3}'

3행은 현재 CPU 비율입니다.

관련 정보