답변:
top -pid 3907 -stats "pid,command,cpu"
-pid 3907
: 프로세스 ID-stats pid,command,cpu
: 프로세스 ID, 이름 및 CPU % 만 표시awk
출력 에서 실행할 필요가 없습니다 .
출력을 사후 처리하려면 로깅 모드 -l 0
에서 실행 하는 데 사용 하십시오 (0은 무기한이며 다른 모든 것은 샘플 수를 제한 함). 출력은 다음과 같습니다 (두 번 반복).
Processes: 72 total, 3 running, 1 stuck, 68 sleeping, 326 threads
2011/05/10 19:15:13
Load Avg: 0.14, 0.14, 0.09
CPU usage: 20.0% user, 26.66% sys, 53.33% idle
SharedLibs: 5304K resident, 5208K data, 0B linkedit.
MemRegions: 16345 total, 1048M resident, 54M private, 338M shared.
PhysMem: 726M wired, 1802M active, 687M inactive, 3215M used, 750M free.
VM: 169G vsize, 1036M framework vsize, 5261732(0) pageins, 552476(0) pageouts.
Networks: packets: 46747406/52G in, 32528901/3715M out.
Disks: 9452898/244G read, 11226269/293G written.
PID COMMAND %CPU
3907 WindowServer 0.0
Processes: 72 total, 3 running, 1 stuck, 68 sleeping, 326 threads
2011/05/10 19:15:14
Load Avg: 0.13, 0.14, 0.09
CPU usage: 0.95% user, 1.90% sys, 97.14% idle
SharedLibs: 5304K resident, 5208K data, 0B linkedit.
MemRegions: 16346 total, 906M resident, 54M private, 386M shared.
PhysMem: 726M wired, 1802M active, 687M inactive, 3215M used, 751M free.
VM: 169G vsize, 1036M framework vsize, 5261732(0) pageins, 552476(0) pageouts.
Networks: packets: 46747406/52G in, 32528901/3715M out.
Disks: 9452898/244G read, 11226269/293G written.
PID COMMAND %CPU
3907 WindowServer 2.7
awk
13 행마 다만 표시 하려면 또는 이와 유사한 도구를 사용하십시오 (이 행에는 해당 예의 값이 포함되어 있음).
$ top -l 0 -pid 3907 -stats pid,command,cpu | awk 'NR%13==0'
3907 WindowServer 0.0
3907 WindowServer 1.3
3907 WindowServer 2.2
top
Linux 와 다른 Mac OS 질문 입니다.
이것은 확실히 이루어질 수 있으며 어떻게해야하는지 설명 할 것입니다. 나는 이것이 최선의 접근법이라고 생각하지는 않지만 그 일을합니다. Linux (및 bash 셸)를 사용하고 있으므로 상단의 기본 동작이 약간 다를 수 있습니다. 따라서 특정 시나리오에 맞게이 미니 하우투를 조정해야 할 수도 있습니다.
인수없이 top을 실행 하십시오.
$ top
여기 내 출력의 헤더와 관련 줄이 있습니다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2569 user 20 0 339m 86m 10m S 7.8 6.9 6:42.99 java
메모리에 일정 시간 동안 머무르고 실제로 CPU를 소비하는 프로세스를 선택했으며 최종 목표에 도달하기위한 테스트 프로세스로 사용합니다.
기본적으로 top은 대화식 모드로 실행됩니다. 이것은 나에게 적합하지 않습니다. 관련 데이터를 캡처하여 인쇄하고 싶습니다. 그 후 데이터를 대화식으로 표시하는 작업을 처리하겠습니다. 맨 페이지의 관련 인용문 :
-b : 배치 모드 작동 상단에서 다른 프로그램 또는 파일로 출력을 보내는 데 유용한 '배치 모드'에서 top을 시작합니다. 이 모드에서 top은 입력을 받아들이지 않으며 '-n'명령 줄 옵션으로 설정 한 반복 제한 또는 종료 될 때까지 실행됩니다.
-n : 반복 횟수 제한 : -n number 종료하기 전에 top이 생성해야하는 최대 반복 횟수 또는 프레임 수를 지정합니다.
출력을 한 번만 인쇄 한 다음 종료하는 조정 된 top 명령입니다.
$ top -b -n 1
보고 싶은 PID를 알고 있으므로 맨 위에 제한을 하나 더 추가하여 해당 프로세스에 대한 데이터 만 인쇄합니다.
$ top -b -n 1 -p 2569
배치 모드에서도 top은 여전히 가동 시간, 여유 메모리 / 스왑 등과 같은 기타 시스템 전체 통계를 포함하는 헤더를 인쇄합니다. 필자는 필요하지 않습니다. 필요한 것은 프로세스에 대한 데이터를 포함하는 한 줄뿐이므로 다음과 같이 전체 출력에서 잘라냅니다.
$ top -b -n 1 -p 2569 | tail -n 2 | head -n 1
보시다시피, 나는 두 번째 줄을 1에서 얻었습니다.
이 줄을 awk로 파이프하여 필요한 열만 추출합니다.
$ top -b -n 1 -p 2569 | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}'
지금까지 명령 줄에서 이러한 조작을 해왔으며 이제는 하드 코딩 된 특정 사례에 지속성과 유연성을 추가해야합니다. 전체 줄을 간단한 쉘 스크립트로 옮기고 있습니다. 3top 이라고 부르 겠습니다 . 이름은 나중에 사용되기 때문에 강조됩니다.
#!/bin/bash
top -b -n 1 -p 2569 | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}'
PID 번호는 하드 코딩되어 있습니다. 다음은 스크립트를 명령 줄 인수로 받아들이는 방법입니다.
#!/bin/bash
top -b -n 1 -p "$1" | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}'
PID 2569에 대한 3 상 디스플레이 통계를 만들려면 다음과 같이 호출해야합니다.
$ ./3top 2569
또한 CPU로드 후 백분율이 표시되기를 원하므로 3top 스크립트를 다음과 같이 조정합니다.
#!/bin/bash
out=$(top -b -n 1 -p "$1" | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}')
echo "$out%"
파이프를 통해 연결된 명령 체인의 전체 출력을 변수로 리디렉션했습니다. 그런 다음 echo를 사용하여 인쇄하고 끝에 CPU로드가 마지막 필드이므로 끝에 '%'를 추가하십시오.
이 시점에서 PID를 인수로 수락하고 통계를 한 번 인쇄하는 배치 스크립트가 있습니다. 실시간 모니터링을 원하십니까? 시계가 할 수 있기 때문에 쉽습니다 ! 다음과 같이 스크립트를 실행하십시오.
$ watch -n 1 3top 2569
초당 3top을 실행하여 실시간 모니터링을 수행합니다.
top
. 잘못된 옵션 또는 구문 : -b . 왜 이것이 반복적으로 상향 조정되었는지 알 수 없습니다.
top
(는에서 procps
) 브루, 핑크 또는 MacPorts를 사용하여 설치 될 수 있고, 사용 중 소스로부터 컴파일 할 수 없다 make
거나 cc top.c
.
top
표시 형식은 사용자 정의 할 수 있지만, 명령 줄에서 표시 옵션을 지정하는 방법은 없다. 그러나 독창적이라면 ~/.toprc
파일 을 영리하게 조작하여 필요한 작업을 수행 할 수 있습니다 .
표시를 사용자 정의 top
하지 않았고 ~/.toprc
파일 이없는 것으로 가정합니다 .
top
.*
당신이 원하는하지 않는 것이 그 옆을 눌러 해당 문자는 해당 필드를 선택 해제합니다. 예를 들어,를 눌러 필드 e를 선택 취소하십시오 User Name
. 이 완료되면, 당신은 단지이 있어야 *
다음을 Process Id
, CPU usage
그리고 Command name/line
.~/.toprc
파일 에 저장 하십시오.top
한 다음 다시 시작하여 설정이 저장되었는지 확인하십시오.~/.toprc
같은 이름 으로 변경하십시오 . 최소 레이아웃으로 전환하려면 시작 하기 전에로 이름을 바꾸십시오 .~/min.toprc
top
~/min.toprc
~/.toprc
top
이 파일 이름 바꾸기 및 실행 top
은 아마도 나보다 더 많은 경험과 지식을 가진 사람이 간단한 쉘 스크립트로 작업 할 수 있습니다. 일반 top
레이아웃이 이미 사용자 정의 된 경우 특별히 고려해야합니다 .
.toprc
합니까? RUID>999
시작할 때 필터를 추가하고 싶습니다 .
# top -p1 -stats "pid,command,cpu" top: unknown option 't'