상위 명령 - 표시되는 열을 줄이는 방법

상위 명령 - 표시되는 열을 줄이는 방법

메모리 사용량과 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 ...]

topprocps는 일반적으로 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

관련 정보