top command
linux의 top 명령을 통해 실시간 수행중인 프로세스들에 대한 정보를 볼 수 있습니다.
top 자체 명령어가 많기 때문에 Man page를 이용하면 좋습니다.
$> top
top - 15:01:58 up 3 days, 51 min, 1 user, load average: 0.32, 0.21, 0.15
Tasks: 370 total, 1 running, 298 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.6 us, 1.0 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16309896 total, 5783464 free, 5049060 used, 5477372 buff/cache
KiB Swap: 16658428 total, 16234492 free, 423936 used. 10597528 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15846 geeksaga 20 0 8653140 2.064g 115348 S 7.6 13.3 19:31.57 java
1840 root 20 0 524728 57744 40812 S 3.6 0.4 261:11.12 Xorg
3786 geeksga 20 0 545492 42624 15772 S 2.3 0.3 4:47.24 gnome-terminal-
1394 root 20 0 4396 1260 1228 S 0.7 0.0 1:13.78 acpid
1933 root -51 0 0 0 0 S 0.7 0.0 50:49.49 irq/33-nvidia
3816 geeksaga 20 0 121736 20556 6540 S 0.7 0.1 0:04.53 nvim
17283 geeksaga 20 0 43364 4120 3240 S 0.7 0.0 0:04.90 top
...
위에 출력된 내용은 부분별로 다음 정보를 의미 합니다.
UPTIME & LOAD Averages
top - 15:01:58 up 3 days, 51 min, 1 user, load average: 0.32, 0.21, 0.15
- uptime 부분에서 설명한 내용과 동일합니다.
TASK & CPU States
Tasks: 370 total, 1 running, 298 sleeping, 0 stopped, 0 zombie
- 전체 실행 중인 프로세스 개수를 total, running, sleeping, stopped, zombie로 구분하여 보여줍니다.
%Cpu(s): 1.6 us, 1.0 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us, user
:un-niced
가 아닌 user 프로세스 사용률sy, system
: 시스템(kernel)이 프로세스 사용률ni, nice
:niced
user 프로세스 사용률id, idle
: 시스템(kernel)이 일하지 않는 시간 비율wa, IO-wait
: I/O를 기다리는 비율hi, Hard Interrupt
: 하드웨어 인터럽트에 소요된 시간 비율si, Soft Interrupt
: 소프트웨어 인터럽트에 소요 시간 비율st, Steal Time
: 가상화 시스템에서 실제 CPU를 할당받기 위해 기다리는 시간 비율
MEMORY Usage
KiB Mem : 16309896 total, 2533064 free, 6246652 used, 7530180 buff/cache
- 물리 메모리의 total, free, used, buff/cache를 나타낸다.
KiB Swap: 16658428 total, 16244476 free, 413952 used. 9316720 avail Mem
- 가강 메모리의 total, free, used, avail Mem(물리 메모리)를 나타낸다.
FIELDS / Columns
PID -- Process ID
: 프로세스 아이디USER
: 프로세스를 실행시킨 사용자 아이디PR -- Priority
: 프로세스 우선순위NI -- Nice
: Nice 값을 나타내며, 음수를 가지는 값이 우선순위가 높다.VIRT -- Virtual Memory Size (KiB)
: 프로세스가 사용하고 있는 전체 가상 메모리 사용량RES -- Resident Memory Size (KiB)
: 스왑되지 않고 프로세스가 실제 사용중인 물리 메모리SHR -- Shared Memory Size (KiB)
: 다른 프로세스와 공유할 수 있는 메모리의 크기를 나타낸다.S -- Process Status
: 프로세스 상태D
= uninterruptible sleep(I/O 작업을 위한 대기 상태)R
= running(CPU 자원을 사용중)S
= sleepingT
= stopped by job control signalt
= stopped by debugger during traceZ
= zombie(부모 프로세스가 죽은 자식 프로세스)
%CPU -- CPU Usage
: 프로세스가 사용하는 CPU의 사용률%MEM -- Memory Usage (RES)
: 프로세스가 사용하는 메모리 사용률TIME+ -- CPU Time, bundredths
: 프로세스가 시작된 이후 경과된 시간COMMAND -- Command Name or Command Line
: 실행된 명령어
유용한 옵션들
-i
: idle 또는 zombie 프로세스를 제외하고 프로세스 목록을 보여 줍니다.-u user_name
: 사용자 명을 입력하면 프로세스를 실행 시킨 사용자 목록만 볼 수 있습니다.-p
: PIDs를 입력하여 해당 프로세스에 대해서만 볼 수 있습니다.(PID 목록은,
로 구분 합니다.)- ex) top -p 15846,1840,1933
- ex) top -p $(pgrep -d ‘,’ process_name)
-b
: Batch-mode로 동작합니다.-n
: top 명령어가 반복된 횟수를 설정 합니다.
top 실행 후 명령어들
1
: Cpu States를 Core 별로 보여 준다.k
: 프로세스를 kill 한다. PID를 입력하면 signal을 전송한다.f
: 화면에 표시될 프로세스 관련 컬럼 설정을 할 수 있다.z
: 색상 변경c
: Command 옵션 값 표시q
:top
프로그램 종료d [sec]
: 설정된 단위로 딜레이 설정(화면 Refresh)- ‘shift + n’ :
PID
컬럼으로 내림차순 - ‘shift + p’ :
%CPU
컬럼으로 내림차순 - ‘shift + m’ :
%MEM
컬럼으로 내림차순 - ‘shift + t’ :
TIME+
컬럼으로 내림차순 - ‘shift + r’ : 정렬 기준을 반대로 변경(내림차순을 오름차순, 오름차순을 내림차순)
help top
$> top -h
procps-ng version 3.3.10
Usage:
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
tldr top
$> tldr top
top
Display dynamic real-time information about running processes.
- Start top:
top
- Do not show any idle or zombie processes:
top -i
- Show only processes owned by given user:
top -u user_name
- Show only the processes with the given PID(s), passed as a comma-separated list. (Normally you wouldn't know PIDs off hand. This example picks the PIDs from the process name):
top -p $(pgrep -d ',' process_name)
- Get help about interactive commands:
?