프로세스 이름/경로별로 현재 프로세스 CPU/메모리 사용량을 가져와서 콘솔에 인쇄하고 싶습니다. 이 명령은 와 같은 연속적인 데이터 스트림을 제공하는 대신 숫자를 출력해야 합니다 ps
.
ps -p PID
작동하지 않습니다:
- 프로세스 번호가 없습니다. (프로세스 경로가 있습니다.)
- 현재 측정값을 콘솔에 한 번 인쇄하지 않습니다.
예를 들어 다음과 같아야 합니다.
$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 비율입니다.