메모리 사용량과 CPU 사용량 열에만 관심이 있는 것처럼 top 명령에서 특정 열을 얻을 수 있습니까?
top 명령의 표시된 열을 위의 두 열로만 줄이는 방법은 무엇입니까?
답변1
노트:이 버전이 있다고 가정top
(프로세스). 다음 명령을 사용하여 확인할 수 있습니다.
$ top --version
top: procps version 3.2.8
usage: top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
top
procps는 일반적으로 Fedora/CentOS/RHEL 및 기타 변형에 포함된 버전입니다.
열 변경
매뉴얼 페이지를 보면 top
"2b. 열 선택 및 정렬"이라는 섹션이 표시됩니다. 다양한 필드/열의 표시 여부를 전환하는 키보드 단축키가 있습니다.
예를 들어:
f,o . Fields/Columns: 'f' add or remove; 'o' change display order
F or O . Select sort field
<,> . Move sort field: '<' next col left; '>' next col right
f입력 시 이 키를 사용하여 top
보조 화면으로 이동할 수 있으며, 여기서 표시 또는 숨김으로 전환해야 하는 열을 지정할 수 있습니다.
예를 들어:
Current Fields: ANOPQRSTUVbcdefgjlmyzWHIKX for window 3:Mem
Toggle fields via field letter, type any other key to return
* A: PID = Process Id * W: S = Process Status
* N: %MEM = Memory usage (RES) * H: PR = Priority
* O: VIRT = Virtual Image (kb) * I: NI = Nice value
* P: SWAP = Swapped size (kb) * K: %CPU = CPU usage
* Q: RES = Resident size (kb) * X: COMMAND = Command name/line
* R: CODE = Code size (kb)
...
더 많은 것들이 있지만 이것들은 단지 예일 뿐입니다. 원하는 방식으로 열 전환을 마쳤으면 Esc선택 화면 종료를 사용하세요.
구성 저장
Shift+를 사용 W하여 변경 사항을 저장하고 기본값으로 설정할 수 있습니다.
W Write configuration file
파일은 여기에 저장되며 $HOME/.toprc
다음과 같습니다.
$ more .toprc
RCfile for "top with windows" # shameless braggin'
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=1.000, Curwin=2
Def fieldscur=AEHIoqTWKNMBcdfgjpLrsuvyzX
winflags=129016, sortindx=19, maxtasks=0
summclr=2, msgsclr=5, headclr=7, taskclr=7
Job fieldscur=ABcefgjlrstuvyzMKNHIWOPQDX
winflags=63416, sortindx=13, maxtasks=0
summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=ANOPQRSTUVbcdefgjlmyzWHIKX
winflags=65464, sortindx=13, maxtasks=0
summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=ABDECGfhijlopqrstuvyzMKNWX
winflags=65464, sortindx=12, maxtasks=0
summclr=3, msgsclr=3, headclr=2, taskclr=7
자세한 내용은 매뉴얼 페이지의 섹션 5, “5. 파일”을 참조하십시오.
답변2
[Centos-6 | Ubuntu 12.10] 이 명령은 CPU 사용량별로 정렬된 4개의 최상위 프로세스를 인쇄합니다.
top -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s\n", $9, $10, $12); }' | head -n 5
산출
%CPU %MEM COMMAND
7.7 0.2 top
0.0 0.3 init
0.0 0.0 kthreadd
0.0 0.0 migration/0
참고: 아직 열 이름이 있으므로 head -n 4 대신 5를 사용하세요.
$9, $10, $12 열은 CPU, MEM 및 COMMAND를 나타냅니다. 열 번호를 얻으려면 "top" 명령을 사용하십시오.
메모리 사용량별로 정렬(이를 실행하려면 "top"이 -m을 지원해야 함)
# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s\n", $9, $10, $12); }' | head -n 5
답변3
JSON 형식의 헤더를 보고 제거합니다.
top -bn 1 | grep "^ " | awk '{ printf("%s%s%s\n","{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | head -n 6 | tail -n +2
출력은 아래와 같습니다.
{CPU:6.4,MEM:0.3,CMD:gnome-terminal}
{CPU:6.4,MEM:1.9,CMD:chrome}
{CPU:0.0,MEM:0.0,CMD:init}
{CPU:0.0,MEM:0.0,CMD:kthreadd}
{CPU:0.0,MEM:0.0,CMD:ksoftirqd/0}
답변4
명령줄 구성
user 를 재정의하여 전체 사용자에게 영향을 미치고 싶지 않았기 .toprc
때문에 각 사용 사례에 대해 별도의 구성을 갖는 솔루션을 생각해 냈습니다. 사용자의 홈 디렉터리에 있는 구성 파일 대신 사용자 정의 구성 파일을 사용할
수 있습니다 . 변수를 필요한 파일이 포함된 사용자 정의 디렉터리로 변경하면 됩니다.top
HOME
.toprc
# TOPRC_PROFILE_DIRECTORY contains .toprc (or can be created by saving using shift+w after configuring using keybindings)
TOPRC_PROFILE_DIRECTORY="<your-directory>"
HOME="$TOPRC_PROFILE_DIRECTORY" top