KOROMOON

착한 사마리아인이 되고 싶습니다.

9/11/2020

리눅스 top 명령어 출력화면 및 사용법 설명


( 1 ) top 명령어



top 명령어는 table of processes 의 약자로  CPU 와 메모리 이용에 관한 정보를 표시하는 수많은 유닉스 계열 운영 체제에서 볼 수 있는 작업 관리자 프로그램임.

사용자 지정 기준에 따라 선택된 실행 중인 프로세스의 목록을 순서대로 보여주며 주기적으로 업데이트됨.

기본 순서는 CPU 사용률이며 오직 최상위 CPU 소비 항목들만이 표기됨.

top 명령어는 얼마나 많은 처리량과 메모리가 사용되는지, 실행 중인 프로세스에 관한 기타 정보도 보여줌.

일부 버전의 top 명령어는 컬럼 선택, 정렬 방식과 같은 디스플레이 사용자 지정을 허용함.




( 2 ) top 명령어 출력화면 (요약 출력 항목)



xx:xx

상단에 현재 시간 옆에 xx:xx 표시는 해당 시간 전에 서버 구동 시간 (예를 들어 2:10 표시할 경우 서버는 2시간 10분 전에 서버가 구동되었다는 의미임.)


users

users 앞에 숫자는 총 사용자 수


load average

각각 1, 5, 15 분 동안의 평균 시스템 부하량 평균값


Tasks & %Cpu(s)

이 부분은 최소 2 줄로 구성되며 SMP 환경에서 추가행은 개별 CPU 상태 백분율을 반열할 수 있음.

1 번째 줄은 작업/스레드 모드 상태에 따라 총 작업 또는 스레드를 표시함. (작업/스레드 모드 변경 문자열은 'H' 임)

분류는 running, sleeping, stopped, zombie 로 분류됨.

2 번째 줄은 마지막 새로 고침 이후 간격을 기준으로 한 CPU 상태율을 표시함.

분류는 아래와 같음.

us, user    - un-niced 사용자 프로세스를 실행하는 시간

sy, system  - 커널 프로세스 실행 시간

ni, nice    - niced 사용자 프로세스 실행 시간

id, idle    - 커널 idle 핸들러에서 보낸 시간

wa, IO-wait - I/O 완료를 기다리는 시간

hi          - 하드웨어 인터럽트 서비스에 소요 된 시간

si          - 소프트웨어 인터럽트 서비스에 소요 된 시간

st          - Hypervisor VM 에 할당된 시간


Mem & Swap

바이트 단위 표시에 따라 키로바이트(KiB) ~ 엑스비바이트(EiB)까지 표시됨.

바이트 단위 표시 변경 문자열은 'E' 임.

1 번째 줄은 물리적 메모리를 반영함.

분류는 total, free, used, buff/cache 로 구분됨.

2 번째 줄은 대부분 가상 메모리를 반영함.

분류는 total, free, used(물리적 메모리), avail Mem(물리적 메모리)




( 3 ) top 명령어 출력화면 (필드별 항목)



PID

프로세스 ID (PID)


USER

프로세스를 시작한 사용자의 유효한 사용자 ID 임. (사용자 ID 와 매핑됨)

실제 사용자 ID  와 유효한 사용자 ID 를 프로세스에 할당함.

여기서 유효한 사용자 ID 는 프로세스가 다른 사용자를 대신할 수 있도록 함.

예를 들어, root 가 아닌 사용자는 패키지를 설치하기 위해 루트로 승격할 수 있음.


PR

작업의 예약 우선 순위임. (Scheduling Priority)

'rt' 가 표시되면 작업이 실시간 예약 우선 순위로 실행되고 있음을 의미함.


NI

작업의 Nice 값으로 음수이면 우선 순위가 높고 양수이면 우선순위가 낮음.

여기서 0 은 단순히 작업의 디스패치 가능성을 결정할 때 우선 순위가 조정되지 않음을 의미함.


VIRT

가상 메모리 크기 (Virtual Memory Size, 단위 - 키로바이트(KiB))

작업에 사용된 총 가상 메모리 양임.

프로세스가 사용하고 있는 가상 메모리의 전체 용량임. (SWAP + RES)

여기에는 모든 코드, 데이터, 공유 라이브러리, 스왑 아웃된 페이지 및 매핑되었지만 사용되지 않은 페이지가 포함됨.


RES

상주 메모리 크기 (Resident Memory Size, 단위 - 키로바이트(KiB))

현재 프로세스가 사용하고 있는 물리 메모리 양임. (RSan + RSfd + RSsh)

실제로 메모리를 쓰고 있는 RES 가 핵심임.

작업이 현재 사용 중인 스왑되지 않은 물리적 메모리를 나타내는 VIRT 의 하위 집합임.

여기에는 비공개 익명 페이지, 파일에 매핑된 비공개(Private) 페이지(프로그램 이미지 및 공유 라이브러리 포함) 및 공유 익명 페이지가 포함될 수 있음.

이러한 모든 메모리는 SWAP 아래에 별도로 표시된 스왑 파일에 의해 지원됨.

이 필드에는 수정 시 전용 스왑 파일로 작동하므로 SWAP 에 영향을 주지 않는 공유 파일 지원 페이지도 포함될 수 있음.


SHR

공유 메모리 크기 (Shared Memory Size, 단위 - 키로바이트(KiB))

다른 프로세스와 공윺하고 있는 공유 메모리의 양임.

다른 프로세스에서 사용할 수 있는 상주 메모리(RES)의 하위 집합임.

여기에는 공유 익명 페이지와 공유 파일 지원 페이지도 파함됨.

또한, 프로그램 이미지 및 공유 라이브러리를 나타내는 파일에 매핑된 비공개(Private) 페이지도 포함됨.


S

프로세스 상태

다음 중 프로세스 상태를 나태내는 문자표임.

D = 무중단 Sleep 상태 (Uninterruptible Sleep)

I = Idle

R = Running

S = Sleeping

T = 작업 제어 신호(Job Control Signal)에 의해 중지됨

t = Trace 중 디버거에 의해 중지됨

Z = Zombie


%CPU

CPU 사용량

실제 SMP 환경에서 프로세스가 다중 스레드이고 top 이 스레드 모드에서 작동하지 않는 경우 100 % 보다 많은 양을 보고될 수 있음.

작업/스레드 모드 변경 문자열은 'H' 임.

다중 프로세스 환경인 경우 Irix 모드가 Off 이면 top 은 작업의 CPU 사용량을 총 CPU 수로 나눈 Solaris 모드에서 작동함.

Irix/Solaris 모드 변경 문자열은 'I' 임.

참고로 트리 구조 뷰 모드 변경 문자열은 'V' 이며 자식 프로세스 축소 변경 문자열은 'v' 임.

이 두 옵션을 On 으로 실행할 경우 보이지 않는 자식 프로세스의 CPU 시간도 포함됨.


%MEM

메모리 사용량

작업의 현재 사용한 실제 메모리 양임.


TIME+

CPU 시간

작업이 시작된 이후 사용한 총 CPU 시간임.

누적 모드가 On 이면 각 프로세스는 자신과 죽은 자식 프로세스가 사용한 CPU 시간과 함께 나열됨.

누적 모드 변경 문자열은 'S' 임.


COMMAND

명령어 이름 또는 명령어 라인

작업을 시작하는 데 사용되는 명령어 라인 또는 관련 프로그램의 이름을 표시함.

명령어 라인 또는 프로그램 이름 표시 변경 문자열은 'c' 임.

명령어 라인 표시로 변경될 경우 명령어 라인이 없는 프로세스(예 : 커널 스레드)는 괄호 안에 프로그램 이름만 표시됨. (예 : [koromoon])

대부분의 열과 달리 COMMAND 필드는 고정 너비가 아님.

표시될 때, 다른 가변 너비 열과 함께 나머지 모든 화면 너비가 할당됨. (최대 512자)




( 4 ) top 명령어 사용법


아무런 옵션 없이 top 명령어만 입력한 경우 3초마다 갱신되며 나가고 싶다면 'q' 문자열을 입력하면 됨.

(스페이스 바를 누르면 바로 화면 업데이트됨)

옵션이 많은 관계로 주로 사용되는 것들만 설명함.

그리고 옵션에 따른 문자열 입력 시 대소문자는 반드시 구분해서 입력해야 함.


01. 기본 사용법 보기

top -h 명령어 입력


02. 도움말 보기

도움말을 볼려면 top 명령어 입력 후 '?' 또는 'h' 문자열 입력하면 됨.

도움말에서 나갈 때는 'q' 문자열 입력하거나 <Esc> 키를 누르면 됨.


03. 배치 모드 출력

top -b 명령어를 입력하면 배치 모드로 출력되며 나갈 때는 Ctrl + C 눌러서 나가면 됨.

아래 화면은 배치 모드 화면이며 보기에 불편함.


04. 화면 업데이트 시간 변경

top -d [초 단위] 명령어를 입력하거나 top 입력 후 'd' 문자열을 입력하여 업데이트 시간 변경이 가능함.

아래 화면은 top 입력 후 'd' 문자열을 입력하여 5 초로 변경할려는 화면임.


05. 프로세스 종료

k 입력 후 종료할 PID 를 입력한 다음 엔터를 치면 됨.

그리고 시그널 입력 시 SIGKILL 인 9 을 입력하고 엔터를 치면 됨.

참고로 root 권한으로 실행된 프로세스는 root 권한이 있어야 프로세스를 종료시킬 수 있음.

아래 화면은 특정 프로세스(wireshark)를 종료하는 화면임.


06. 목록 정렬

목록 정렬은 아래 기준에 따라 4 개의 문자열을 입력하면 됨.

'M' : 메모리 사용량 기준으로 정렬

'P' : CPU 사용량 기준으로 정렬

'N' : 프로세스 ID 별로 정렬

'T' : 실행 시간을 기준으로 정렬

기본적으로 정렬 결과값은 내림차순으로 표시하며 오름차순으로 전환할 경우 'R' 문자열을 입력하면 됨.

아래 화면은 실행 시간을 기준으로 정렬한 화면임.


07. 작업/스레드 모드 변경

기본적으로 작업 모드로 출력되며 스레드 모드로 변경하고 싶다면 'H' 문자열을 입력하면 됨.

다시 'H' 누르면 작업 모드로 변경됨.

아래 화면은 스레드 모드로 출력된 화면임.


08. 명령어 라인 또는 프로그램 이름 표시 변경

기본적으로 COMMAND 필드에 프로그램 이름으로 표시되며 명령어 라인으로 변경하고 싶다면 'c' 문자열을 입력하면 됨.

다시 'c' 누르면 프로그램 이름으로 표시됨.

아래 화면은 COMMAND 필드에 명령어 라인으로 표시된 화면임.


09. 트리 구조 뷰 모드/자식 프로세스 축소 변경

트리 구조 뷰 모드 변경 문자열는 'V' 이며 자식 프로세스 축소 변경 문자열는 'v'('V' 누른 후 사용 가능)임.

아래 화면은 각각 트리 구조 뷰 모드와 자식 프로세스 축소된 화면임.


10. 특정 사용자의 프로세스 나열

'u' 문자열 입력 후 특정 사용자 ID 를 입력하면 해당 사용자의 프로세스가 나열됨.

아래 화면은 kali 사용자에 대한 프로세스 나열한 화면임.


11. idle 또는 좀비 프로세스 표시 변경

idle 또는 좀비 프로세스 표시 변경 문자열은 'i' 임.

아래 화면은 idle 또는 좀비 프로세스 미표시 화면임.


12. 프로세스 필터링

필터 표현식은 필드별 항목에 대해서 속성과 값 사이의 관계를 지정하면 됨.

아래 예와 같이 지정하면 됨.

COMMAND=wireshark  : COMMAND 필드에 "wireshark" 문자열이 포함된 프로세스만 필터링해서 출력

!USER=root         : USER 필드에 "root" 문자열이 미포함된 프로세스만 필터링해서 출력

%MEM>10.0          : MEM 사용률이 10 % 이상인 프로세스만 필터링해서 출력


13. CPU 및 메모리 통계의 기본 모양 변경

't' 문자열 입력 시 CPU 통계 스타일이 변경되며 'm' 문자열 입력 시 메모리 통계 스타일이 변경됨.

't' 또는 'm' 문자열을 반복해서 누르면 4 가지 스타일이 순환해서 보여줌.

처음 두 번 누르면 두 가지 다른 유형의 진행률 표시줄이 순환됨.

세 번째 누르면 진행률 표시줄이 숨겨지며 네 번째 누르면 기본 화면으로 돌아옴.

아래 화면은 't' 와 'm' 문자열을 각각 한 번 누른 화면임.


14. 화면 출력 시 색상 선택 및 전환 여부

'Z' 문자열 입력 후 출력 색상을 원하는 색상으로 변경이 가능하며 'z' 문자열 입력은 색상 전환 여부를 설정할 수 있음.

아래 화면은 'Z' 문자열을 입력한 화면임.

(보통 원하는 숫자로 색상 설정하고 'z' 문자열을 입력하여 색상 전환 여부를 선택하면 됨)


15. 필드별 항목 사용자 선택

'f' 문자열을 누른 후 위아래 화살표로 이동하여 원하는 항목을 스페이스 바로 선택하면 됨.

그리고 설정이 끝나고 나갈 때는 'q' 문자열 이나 <Esc> 키를 누르면 됨.

아래 화면은 'f' 문자열을 입력한 화면임.


16. top 명령어 설정값 저장

'W' 문자열을 입력하면 홈 디렉토리의 특정 경로에 설정값이 저장됨.

아래 화면은 'W' 문자열을 입력한 후 화면에 경로를 알려줌.




참고 사이트 : 

https://ko.wikipedia.org/wiki/Top_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)

https://man7.org/linux/man-pages/man1/top.1.html

https://www.booleanworld.com/guide-linux-top-command/




============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.


댓글 없음:

댓글 쓰기