top 명령어 핵심 정리 – Linux top

🔥 가장 많이 쓰는 top 단축키

기능설명
q종료top 종료
h도움말모든 단축키 보기
k프로세스 종료PID 입력 후 kill
rnice 값 변경프로세스 우선순위 변경
c명령어 전체 표시프로그램 경로 표시
PCPU 사용률 정렬CPU 많이 쓰는 순
M메모리 사용률 정렬메모리 많이 쓰는 순
T실행 시간 정렬오래 실행된 순
NPID 정렬PID 기준 정렬
R정렬 역순정렬 방향 반전
1CPU 코어별 보기CPU 코어별 사용률 표시
tCPU 정보 토글CPU 사용률 영역 표시/숨김
m메모리 정보 토글메모리 정보 표시/숨김
lLoad average 토글load average 표시/숨김
iIdle 프로세스 숨김CPU 사용 중인 프로세스만 표시
u사용자 필터특정 사용자 프로세스만 표시
drefresh 시간 변경화면 갱신 주기 변경
srefresh 시간 변경 (구버전)갱신 간격 설정
f표시 컬럼 설정top 컬럼 추가/삭제
W설정 저장현재 top 설정 저장
V트리 구조로 부모-자식 관계 표시
v선택한 프로세스의 자식 프로세스 숨기기/보이기
F포커스 모드 진입
단축키 도움말
# 원문
Help for Interactive Commands - procps-ng 4.0.4
Window 1:Def: Cumulative mode Off.  System: Delay 3.0 secs; Secure mode Off.

  Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
  l,t,m,I,0 Toggle: 'l' load avg; 't' task/cpu; 'm' memory; 'I' Irix; '0' zeros
  1,2,3,4,5 Toggle: '1/2/3' cpu/numa views; '4' cpus abreast; '5' P/E-cores
  f,X       Fields: 'f' add/remove/order/sort; 'X' increase fixed-width fields

  L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
  R,H,J,C . Toggle: 'R' Sort; 'H' Threads; 'J' Num justify; 'C' Coordinates
  c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
  x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
  z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
  u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
  n,#,^O  . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
  V,v,F   . Toggle: 'V' forest view; 'v' hide/show children; 'F' keep focused

  d,k,r,^R 'd' set delay; 'k' kill; 'r' renice; Ctrl+'R' renice autogroup
  ^G,K,N,U  View: ctl groups ^G; cmdline ^K; environment ^N; supp groups ^U
  Y,!,^E,P  Inspect 'Y'; Combine Cpus '!'; Scale time ^E; View namespaces ^P
  W,q       Write config file 'W'; Quit 'q'
          ( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,

# 번역본
대화형 명령어 도움말 - procps-ng 4.0.4
창 1: 기본값(Def): 누적 모드 꺼짐.  시스템: 갱신 지연 3.0초; 보안 모드 꺼짐.

  Z,B,E,e   전역 설정: 'Z' 색상; 'B' 굵게 표시; 'E'/'e' 요약/작업 메모리 표시 단위
  l,t,m,I,0 토글: 'l' load average; 't' 작업/CPU; 'm' 메모리; 'I' Irix 모드; '0' 0 값 표시
  1,2,3,4,5 토글: '1/2/3' CPU/NUMA 보기; '4' CPU 가로 나열; '5' P/E 코어 표시
  f,X       필드: 'f' 필드 추가/제거/순서/정렬; 'X' 고정 너비 필드 크기 증가

  L,&,<,> . 검색: 'L'/'&' 찾기/다시 찾기; 정렬 열 이동: '<'/'>' 왼쪽/오른쪽
  R,H,J,C . 토글: 'R' 정렬 방향; 'H' 스레드 표시; 'J' 숫자 정렬; 'C' 좌표 표시
  c,i,S,j . 토글: 'c' 명령어 이름/전체 명령줄; 'i' 유휴 작업; 'S' 시간; 'j' 문자열 정렬
  x,y     . 강조 토글: 'x' 정렬 필드 강조; 'y' 실행 중 작업 강조
  z,b     . 토글: 'z' 컬러/흑백; 'b' 굵게/역상 (x 또는 y가 활성화된 경우)
  u,U,o,O . 필터: 'u'/'U' 실행 사용자/모든 사용자; 'o'/'O' 다른 조건
  n,#,^O  . 설정: 'n'/'#' 표시할 최대 작업 수; 표시: Ctrl+'O' 다른 필터 보기
  V,v,F   . 토글: 'V' 트리(forest) 보기; 'v' 자식 프로세스 숨김/표시; 'F' 포커스 유지

  d,k,r,^R 'd' 갱신 지연 설정; 'k' 프로세스 종료; 'r' nice 값 변경; Ctrl+'R' autogroup nice 변경
  ^G,K,N,U  보기: Ctrl+'G' 제어 그룹; Ctrl+'K' 명령줄; Ctrl+'N' 환경 변수; Ctrl+'U' 보조 그룹
  Y,!,^E,P  검사: 'Y' 상세 검사; '!' CPU 결합; Ctrl+'E' 시간 단위 변경; Ctrl+'P' 네임스페이스 보기
  W,q       'W' 설정 파일 저장; 'q' 종료
          ( '.' 표시가 있는 명령어는 작업 목록 창이 보일 때만 사용 가능 )
Windows 관련 도움말은 'h' 또는 '?' 키를 누르십시오.

예시 (기본)

[lycos7560@DMT-RL01 ~]$ top
top - 03:42:50 up 2 min,  2 users,  load average: 0.01, 0.00, 0.00
Tasks: 269 total,   1 running, 268 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
MiB Mem :   3621.8 total,   3136.7 free,    512.6 used,    187.3 buff/cache
MiB Swap:   4008.0 total,   4008.0 free,      0.0 used.   3109.2 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     28 root      20   0       0      0      0 I   0.3   0.0   0:00.17 kworker/1:0-events
      1 root      20   0   49176  40952  10468 S   0.0   1.1   0:02.13 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.02 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_workqueue_release
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-rcu_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-sync_wq
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-slub_flushwq
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-netns
      8 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0-events
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
     10 root      20   0       0      0      0 I   0.0   0.0   0:00.10 kworker/0:1-events
     11 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker/u512:0-async
     12 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-mm_percpu_wq
     13 root      20   0       0      0      0 I   0.0   0.0   0:00.69 kworker/u512:1-async
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthread
     15 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_kthread
     16 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace_kthread
     17 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/0
     18 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_preempt
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_exp_par_gp_kthread_worker/1
     20 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_exp_gp_kthread_worker
     21 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0
     22 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     23 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     24 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     25 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1
     26 root      rt   0       0      0      0 S   0.0   0.0   0:00.52 migration/1
     27 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/1
     29 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri
     30 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/2
     31 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/2
     32 root      rt   0       0      0      0 S   0.0   0.0   0:00.52 migration/2
     33 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/2
     34 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker/2:0-rcu_gp
     35 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/2:0H-events_highpri
     36 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/3
     37 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/3
     38 root      rt   0       0      0      0 S   0.0   0.0   0:00.53 migration/3
     39 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/3
     40 root      20   0       0      0      0 I   0.0   0.0   0:00.09 kworker/3:0-events
     41 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/3:0H-events_highpri
     43 root      20   0       0      0      0 I   0.0   0.0   0:00.02 kworker/u512:2-async

1️⃣ 시스템 전체 상태

top - 03:42:50 up 2 min,  2 users,  load average: 0.05, 0.05, 0.02
항목의미
03:42:50현재 시스템 시간
up 2 min시스템이 부팅된 후 가동 시간
2 users현재 로그인한 사용자 수
load average시스템 평균 부하
load average
0.05, 0.05, 0.02

각 의미

의미
첫번째1분 평균 부하
두번째5분 평균 부하
세번째15분 평균 부하

👉 Load Average 의미

CPU가 처리해야 할 대기 작업 수

CPU 실행중 프로세스
CPU 실행 대기 프로세스
Disk I/O 대기 프로세스

예시

CPU 코어정상 load
1 core1.0
4 core4.0

지금 값

0.05
➡ 거의 아무 작업도 없는 상태 👍

2️⃣ 프로세스 상태

Tasks: 269 total,   1 running, 268 sleeping,   0 stopped,   0 zombie
항목의미
total전체 프로세스 수
running실행 중
sleeping대기 상태
stopped중지된 프로세스
zombie좀비 프로세스

현재 상태

상태
전체 프로세스269
실행 중1
대기268
좀비0

👉 대부분 시스템 프로세스는 sleep 상태입니다.


3️⃣ CPU 사용률

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st

CPU 사용률 항목

항목의미
us (user)사용자 프로그램 사용 CPU
sy (system)커널 사용 CPU
ni (nice)nice 값 조정된 프로세스
nice 값이 변경된 프로세스가 사용한 CPU
이 작업이 CPU를 20% 사용하면 %Cpu(s): 5 us, 3 sy, 20 ni, …
id (idle)CPU 유휴 상태
wa (wait)I/O 대기
hi하드웨어 인터럽트
si소프트웨어 인터럽트
stVM에서 CPU 뺏긴 시간

현재 상태

100% idle
➡ CPU 완전 여유 상태

멀티코어 환경에서 100%를 초과할 수 있음
(예: 4코어면 최대 400%)


4️⃣ 메모리 정보

MiB Mem :   3621.8 total,   3136.7 free,    512.6 used,    187.3 buff/cache
MiB Swap:   4008.0 total,   4008.0 free,      0.0 used.   3109.2 avail Mem
항목의미
total전체 메모리
free완전히 남은 메모리
used실제 사용
buff/cache캐시 / 버퍼

현재 상태

항목
total3621MB
free3136MB
used512MB
cache187MB

참고: 리눅스는 남는 메모리를 캐시로 사용하므로 free 메모리가 적어도 실제로는 여유가 많을 수 있다.

예를 들어
free       3137 MB
buff/cache 187 MB
≈ 3324 MB

# 추가적으로 리눅스에서는 일부 메모리 커널이 예약(reserved)함. 
4096 MB - 약 400~500 MB
≈ 3600 MB

[lycos7560@DMT-RL01 ~]$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.5Gi       506Mi       3.1Gi       9.0Mi       187Mi       3.0Gi
Swap:          3.9Gi          0B       3.9Gi

실무에서는 출력에서 free -h의 available 만 본다.

Swap 정보

Swap(스왑)은 리눅스에서 메모리(RAM)가 부족할 때 사용하는 디스크 공간으로 쉽게 말하면 RAM의 임시 확장 공간입니다.

RAM이 부족하면 운영체제는 일부 데이터를 디스크로 옮겨서 공간을 확보합니다.

이 디스크 공간을 Swap이라고 합니다.

RAM = 4GB
프로그램 실행 = 5GB 필요
4GB → RAM
1GB → Swap
RAM 부족 → 일부 데이터를 디스크로 이동

단, Swap은 디스크를 사용하기 때문에 매우 느립니다.

MiB Swap:   4008.0 total,   4008.0 free,      0.0 used.   3109.2 avail Mem
항목의미
totalswap 전체
free남은 swap
used사용된 swap
avail Mem실제 사용 가능한 메모리

현재 상태

항목
swap total4GB
swap used0

swap 사용 없음 (아주 좋은 상태)


5️⃣ 프로세스 정보 영역 (Process List)

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     28 root      20   0       0      0      0 I   0.3   0.0   0:00.17 kworker/1:0-events
      1 root      20   0   49176  40952  10468 S   0.0   1.1   0:02.13 systemd
.... 생략
항목의미
PID프로세스 ID
USER프로세스를 실행한 사용자
PR프로세스 우선순위 (Priority)
NInice 값 (우선순위 조정 값)
VIRT가상 메모리 사용량
RES실제 RAM 사용량
SHR다른 프로세스와 공유하는 메모리
S프로세스 상태
%CPUCPU 사용률
%MEM메모리 사용률
TIME+CPU 사용 누적 시간
COMMAND실행된 명령어

PID (Process ID)

프로세스의 고유 번호입니다.

# 리눅스에서 systemd은 항상 PID 1
# 리눅스 시스템의 최초 프로세스

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0   49176  40952  10468 S   0.0   1.1   0:02.15 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.02 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_workqueue_release
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-rcu_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-sync_wq
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-slub_flushwq
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-netns
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
     12 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/R-mm_percpu_wq
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthread
     15 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_kthread
     16 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace_kthread
     17 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/0
     18 root      20   0       0      0      0 I   0.0   0.0   0:00.02 rcu_preempt
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_exp_par_gp_kthread_worker/1
     20 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_exp_gp_kthread_worker
     21 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0
     22 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     23 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     24 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     25 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1
     26 root      rt   0       0      0      0 S   0.0   0.0   0:00.53 migration/1
     27 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/1
     29 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri
     30 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/2
     31 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/2
     32 root      rt   0       0      0      0 S   0.0   0.0   0:00.53 migration/2
     33 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/2
     35 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/2:0H-events_highpri

... 생략

PR (Priority)

프로세스의 실제 스케줄러 우선순위
(일반적으로 PR = 20 이 기본)

일반 프로세스는 PR = 20 + NI, 실시간 프로세스는 PR이 -100 등으로 낮게 표시됨

의미
낮을수록높은 우선순위
높을수록낮은 우선순위

NI (Nice Value)

CPU 우선순위를 조정하는 값 (-20 ~ 19)

의미
-20최고 우선순위
0기본
19가장 낮음

VIRT (Virtual Memory)

프로세스가 확보한 가상 메모리 전체.

실제로 물리 메모리(RES)나 스왑을 사용하지 않더라도, 주소 공간만 확보한 경우도 포함.

RAM
Swap
Shared library
Mapped file

#즉, 프로세스가 접근 가능한 전체 메모리 공간

RES (Resident Memory)

실제 물리 메모리에 상주하는 크기. (프로세스가 현재 사용 중인 RAM)

실제 물리 메모리 사용량

systemd
RES = 40952 KB (약 40MB RAM 사용)

SHR (Shared Memory)

공유 메모리 영역. 주로 공유 라이브러리(예: libc)가 여러 프로세스에서 공유되는 부분.

특히 SHR은 다른 프로세스와 공유되므로, 모든 프로세스의 SHR을 합치면 전체 메모리보다 커질 수 있습니다. (중복 포함)

대표적으로 shared library 
libc
glibc

S (Process State)

프로세스 상태를 나타냅니다.

상태의미
RRunning (실행 중)
SSleeping (대기 상태)
DI/O 대기
T중지됨
ZZombie
IIdle kernel thread

%CPU

프로세스가 사용한 CPU 비율

%MEM

전체 메모리 중 해당 프로세스가 사용하는 비율

TIME+

프로세스가 사용한 총 CPU 시간

TIME+ 형식 / 분:초.센티초

0:02.13 => 2.13초 동안 CPU 사용
1:30.00 => 1분 30초

COMMAND

실행 중인 프로그램 이름

systemd
kworker
sshd
bash

⭐ top에서 자주 보이는 커널/시스템 프로세스 10개

프로세스역할
systemd시스템 관리자
kworker커널 작업 처리
ksoftirqd인터럽트 처리
rcu동시성 관리
migrationCPU 작업 이동
kthreadd커널 스레드 생성
kswapdswap 관리
kcompactd메모리 정리
cpuhpCPU hotplug 관리
idle_injectCPU idle 관리

systemd

리눅스 시스템의 첫 번째 프로세스 (PID 1)

# 역할 - 리눅스 전체 시스템 관리자
시스템 초기화
서비스 관리
데몬 실행
시스템 종료 관리

# 예
systemctl start sshd
systemctl stop httpd

kworker

커널의 백그라운드 작업 처리 스레드 / 특정 CPU에 바인딩된 워커 스레드

kworker/1:0-events

# 역할
비동기 커널 작업 처리
장치 드라이버 작업
I/O 처리

kworker/1:0처럼 숫자가 붙은 것이 바인딩된 워커
ukworker/u512처럼 u가 붙은 것은 unbound(특정 CPU에 바인딩되지 않은) 워커

ksoftirqd

소프트웨어 인터럽트 처리 스레드

ksoftirqd/0

# 역할
네트워크 패킷 처리
인터럽트 후 작업 처리
soft interrupt 처리

rcu

멀티코어 환경에서 데이터 동기화

RCU (Read Copy Update) 관리 스레드 – RCU는 리눅스 커널의 동시성 제어 기술

rcu_preempt
rcu_tasks_kthread

migration

CPU 작업 이동 관리 – 프로세스를 다른 CPU 코어로 이동

CPU 간 부하 분산(load balancing)을 위해 프로세스를 이동시킨다.

migration/0
migration/1

CPU load balancing

kthreadd

PID 2

커널 스레드의 부모 프로세스로 모든 커널 스레드 생성

kswapd

메모리 관리 스레드 / 메모리 부족 시 swap 관리

RAM 부족
→ 페이지 교체
→ swap 사용

kcompactd

메모리 조각 정리 스레드 / 메모리 조각화 해결

큰 메모리 블록 필요
→ 메모리 재배치

cpuhp

CPU Hotplug 관리 / CPU 활성화/비활성화 관리

cpuhp/0

CPU online/offline

idle_inject

CPU idle 상태 관리 / CPU 전력 관리

CPU가 유휴 상태일 때 전력 절감을 위해 idle을 주입하는 스레드

CPU idle 상태 유지

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤