macOS에서 실행되는 상위 10개 프로세스를 인쇄하는 코드를 작성하려고 합니다. 하지만 이 코드를 실행하면 top -l 1 -u -o cpu -n10 | awk 'NR==12, NR==22 {print $2,$3,$8}';
출력이 행과 열로 구성된 테이블 형식으로 구성되지 않습니다. 출력 형식을 어떻게 지정합니까?
PS 나는 이것을 시도했지만 top -l 1 -u -o cpu -n10 | awk 'BEGIN {printf("%s %10s %8s \n" ,"NAME", "%CPU", "MEM")} {printf("%s %10f %8s\n",NR==12, NR==22, $2, $3, $8)}';
역시 작동하지 않았습니다(정확한 데이터도 표시하지 않았습니다.
답변1
이것이 내가 얻는 것입니다 top -l 1 -u -o cpu -n10 | awk 'NR==12, NR==22 {print $2,$3,$8}';
:
COMMAND %CPU MEM
WindowServer 0.0 574M+
Google Chrome 1
kernel_task 0.0 1183M+
postbox 0.0 1027M+
Google Chrome 1186+
coreaudiod 0.0 6416K+
Google Chrome 1
Telegram 0.0 364M+
Google Chrome 1
Slack Helper 1
이것예행과 열이 있는 테이블입니다. 더 나은 형식을 지정하려면 column
.
top -l 1 -u -o cpu -n10 | awk 'NR==12, NR==22 {print $2,$3,$8}' | column -t
:
COMMAND %CPU MEM
WindowServer 0.0 549M+
Google Chrome 1
kernel_task 0.0 1174M+
postbox 0.0 1027M+
Google Chrome 1185+
coreaudiod 0.0 6416K+
Google Chrome 1
Telegram 0.0 365M+
Google Chrome 1
Slack Helper 1
편집: top
필드가 공백으로 구분되어 있으므로 올바른 열을 구문 분석하는 데 문제가 있습니다. 열을 설정하면 -stats
더 좋을 수도 있습니다 .
top -l 1 -u -o cpu -n10 -stats command,cpu,mem | awk '/COMMAND/{y=1;next}y'
WindowServer 0.0 560M+
Google Chrome He 0.0 402M+
kernel_task 0.0 1170M+
postbox 0.0 1027M+
Google Chrome 0.0 235M+
coreaudiod 0.0 6408K+
Google Chrome He 0.0 161M+
Telegram 0.0 364M+
Google Chrome He 0.0 107M+
Slack Helper (Re 0.0 307M+
답변2
ps 명령을 사용해 보십시오. 표 형식으로 출력을 얻는 기능.
ps axo command,%cpu,%mem|awk 'NR <=11'
COMMAND %CPU %MEM
/usr/lib/systemd/systemd -- 1.0 1.3
[kthreadd] 0.0 0.0
[ksoftirqd/0] 0.0 0.0
[kworker/0:0] 0.0 0.0
[kworker/0:0H] 0.0 0.0
[kworker/u2:0] 0.0 0.0
[migration/0] 0.0 0.0
[rcu_bh] 0.0 0.0
[rcu_sched] 0.2 0.0
[watchdog/0] 0.0 0.0