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 stus, user:un-niced가 아닌 user 프로세스 사용률sy, system: 시스템(kernel)이 프로세스 사용률ni, nice:niceduser 프로세스 사용률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:
?