동작중인 프로세스의 상태를 출력해주는 명령이다.
옵션 | 설명 |
---|---|
a | 터미널과 연관된 프로세스를 출력하는 옵션(BSD계열) |
-a | 세션 리더(일반적인 로그인 셸)을 제외하고 터미널에 종속되지 않은 모든 프로세스 출력 |
u | 프로세스 소유자를 기준으로 출력 |
-u | 특정 사용자의 프로세스 정보를 확인할 때 사용. 사용자를 지정하지 않으면 현재 사용자를 기준으로 정보 출력 |
x | 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력한다. 보통 a 옵션과 결합해 모든 프로세스를 출력할때 사용한다. |
l | 프로세스 정보를 길게 보여주는 옵션으로 우선수누이와 관련된 PRI와 NI값을 확인할 수 있다. |
e | 해당 프로세스에 관련된 환경 변수 정보도 같이 출력한다. |
-e | 모든 프로세스를 출력한다.(-A와 같음) |
-A | 모든 프로세스를 출력한다.(-e와 같음 System V 계열) |
f | 프로세스간 상속관계를 트리구조로 보여준다. |
-f | 유닉스 스타일로 출력해주는 옵션으로 UID, PID, PPID 등이 함께 출력된다. |
p | 특정 PID를 지정할 때 사용한다.(BSD 계열) |
-p | 특정 PID를 지정할 때 사용한다.(SyS V 계열) |
-C 프로세스명 | 지정한 프로세스만 보여준다. |
-o 값 | 출력 포맷을 지정하는 옵션이다. 값으로는 pid, tty, time, cmd 등을 지정할 수 있다. |
항목 | 설명 |
---|---|
USER | 프로세스 소유자 명(BSD 계열) |
UID | 프로세스 소유자 명(System V) |
PID | 프로세스 식별번호 |
%CPU | CPU 사용 비율 추정치(BSD) |
%MEM | 메모리 사용 비율 추정치(BSD) |
VSZ | K단위 또는 페이지 단위의 가상 메모리 사용량 |
RSS | 실제 메모리 사용량(Resident Set Size) |
TTY | 프로세스와 연결된 터미널 |
STAT | 프로세스 상태코드 |
START | 프로세스 시작 시간 |
TIME | 총 CPU 사용 시간 |
COMMAND | 프로세스 실행 명령 |
STIME | 프로세스가 시작된 시간(Sys V) |
C, CP | 짧은 기간동안 CPU 사용률 |
F | 프로세스 플래그(1: exec 호출 없이 fork된 경우 4: 슈퍼유저 사용자) |
PPID | 부모 프로세스의 PID |
PRI | 실제 실행 우선순위 |
NI | nice 우선순위 번호 |
값 | 의미 |
---|---|
R(Running) | 실행 중 혹은 실행 될 수 있는 상태 |
S(Sleeping) | 인터럽트에 의한 sleep 상태 특정 이벤트가 종료되기를 기다림 |
D(Disk wait) | 디스크 I/O에 의해 대기하고 있는 상태 |
T(Traced of stopped) | 정지된 상태(suspend) |
Z(Zombie) | 좀비 프로세스를 뜻하는데, 작업이 종료되었으나 부모 프로세스로 부터 회수되지 않아 메모리를 차지하고 있는 상태 |
X | 죽어있는 상태를 뜻 |
< | 우선순위가 인위적으로 높아진 상태 |
N(Nice) | 다른 사용자에 의해 인위적으로 우선순위가 낮아진 상태 |
L | 메모리 안에서 페이지가 잠금된 상태(real-time과 I/O에 의해 발생) |
s | session Leader |
I | 멀티 쓰레드 상태(CLONE_THREAD) |
+ | 포어그라운드 프로세스 그룹 |
$ ps a
PID TT STAT TIME COMMAND
72277 s000 Ss 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --serv
72278 s000 S 0:00.05 login -fp dh0023
72279 s000 S+ 0:00.30 -zsh
79333 s001 Ss 0:00.09 /Applications/iTerm.app/Contents/MacOS/iTerm2 --serv
79338 s001 S 0:00.05 login -fp dh0023
79339 s001 S 0:00.16 -zsh
79814 s001 R+ 0:00.00 ps aa
497 s004 Ss 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --serv
498 s004 S 0:00.04 login -fp dh0023
499 s004 S+ 0:00.29 -zsh
$ ps u
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
dh0023 79339 0.0 0.0 4298356 3784 s001 S 2:56PM 0:00.18 -zsh
dh0023 79333 0.0 0.1 4299336 9620 s001 Ss 2:56PM 0:00.09 /Applicati
dh0023 72279 0.0 0.1 4298416 4444 s000 S+ 2:51PM 0:00.30 -zsh
dh0023 72277 0.0 0.1 4307528 9636 s000 Ss 2:51PM 0:00.05 /Applicati
dh0023 499 0.0 0.1 4298416 4264 s004 S+ 1:19PM 0:00.29 -zsh
dh0023 497 0.0 0.1 4307528 7200 s004 Ss 1:19PM 0:00.05 /Applicati
$ ps x
PID TT STAT TIME COMMAND
330 ?? S 0:00.10 /System/Library/Frameworks/LocalAuthentication.frame
332 ?? S 0:03.11 /usr/sbin/cfprefsd agent
334 ?? S 0:03.22 /usr/libexec/UserEventAgent (Aqua)
336 ?? S 0:04.58 /usr/sbin/distnoted agent
337 ?? S 0:00.36 /System/Library/PrivateFrameworks/CloudServices.fram
338 ?? S 0:01.16 /usr/libexec/knowledge-agent
339 ?? S 0:00.62 /usr/sbin/universalaccessd launchd -s
340 ?? S 0:12.09 /usr/libexec/trustd --agent
$ ps l
UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND
501 72277 440 0 31 0 4307528 9636 - Ss s000 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp dh0023
501 72279 72278 0 31 0 4298416 4452 - S+ s000 0:00.30 -zsh
501 79333 440 0 31 0 4299336 9620 - Ss s001 0:00.09 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp dh0023
501 79339 79338 0 31 0 4298356 3792 - S s001 0:00.20 -zsh
501 497 440 0 31 0 4307528 7200 - Ss s004 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp dh0023
501 499 498 0 31 0 4298416 4272 - S+ s004 0:00.30 -zsh
$ ps -A # or ps -e
PID TTY TIME CMD
1 ?? 0:16.88 /sbin/launchd
108 ?? 0:01.30 /usr/sbin/syslogd
109 ?? 0:02.63 /usr/libexec/UserEventAgent (System)
112 ?? 0:00.22 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
113 ?? 0:02.00 /usr/libexec/kextd
114 ?? 0:07.73 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
115 ?? 0:00.24 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
118 ?? 0:02.69 /usr/sbin/systemstats --daemon
119 ?? 0:01.35 /usr/libexec/configd
120 ?? 0:06.63 /Applications/Pulse Secure.app/Contents/Plugins/JUNS/dsAccessService
121 ?? 0:00.03 endpointsecurityd
122 ?? 0:04.40 /System/Library/CoreServices/powerd.bundle/powerd
126 ?? 0:11.52 /usr/libexec/logd
127 ?? 0:00.09 /usr/libexec/keybagd -t 15
....
$ ps e
PID TT STAT TIME COMMAND
72277 s000 Ss 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp dh0023 TERM_SESSION_ID=w0t1p0:345172BD-549A-48EC-93AD-2E2CBBE02E05 SSH_AUTH_SOCK=
72279 s000 S+ 0:00.30 -zsh TERM_SESSION_ID=w0t1p0:345172BD-549A-48EC-93AD-2E2CBBE02E05 SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.dH0358R97g/Listeners LC_TERMINAL_VER
79333 s001 Ss 0:00.09 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp dh0023 TERM_SESSION_ID=w0t2p0:7340959C-1615-45BC-8246-B2E28DA74DED SSH_AUTH_SOCK=
79339 s001 S 0:00.21 -zsh TERM_SESSION_ID=w0t2p0:7340959C-1615-45BC-8246-B2E28DA74DED SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.dH0358R97g/Listeners LC_TERMINAL_VER
497 s004 Ss 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp dh0023 TERM_SESSION_ID=w0t0p0:8FF1A37C-A8B1-4C5B-8637-3F97DACC452E SSH_AUTH_SOCK=
499 s004 S+ 0:00.30 -zsh TERM_SESSION_ID=w0t0p0:8FF1A37C-A8B1-4C5B-8637-3F97DACC452E SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.dH0358R97g/Listeners LC_TERMINAL_VER
# 시스템에 동작중인 모든 프로세스를 소유자 정보와 함께 출력
$ ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
dh0023 440 1.2 1.9 5339640 161920 ?? R 1:19PM 0:59.49 /Applications/iTerm.app/Contents/MacOS/iTerm2 -psn_0_118813
_hidd 167 0.5 0.1 4336612 8000 ?? Ss 1:19PM 0:53.62 /usr/libexec/hidd
_windowserver 223 0.3 1.1 7051560 95160 ?? Ss 1:19PM 8:28.02 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon
dh0023 5450 0.3 4.4 5321744 367220 ?? S 1:27PM 3:48.83 /Applications/Notion.app/Contents/Frameworks/Notion Helper (Renderer).app/Contents/MacOS/Notio
root 169 0.2 0.1 4337340 9040 ?? Ss 1:19PM 0:00.43 /usr/libexec/corebrightnessd --launchd
dh0023 5231 0.2 1.6 5340956 137288 ?? S 1:27PM 1:21.32 /Applications/KakaoTalk.app/Contents/MacOS/KakaoTalk
root 122 0.2 0.1 4335440 6624 ?? Ss 1:19PM 0:04.66 /System/Library/CoreServices/powerd.bundle/powerd
dh0023 472 0.1 0.8 4981764 69400 ?? S 1:19PM 0:09.99 /Applications/Sublime Text.app/Contents/MacOS/plugin_host 441 --auto-shell-env
dh0023 525 0.1 0.3 4411024 26352 ?? S 1:19PM 0:10.57 /Applications/Delfino/delfino.app/Contents/MacOS/delfino
# System V 계열 옵션으로 시스템에 동작중인 모든 프로세스를 출력 + 한페이지씩 화면에 출력
$ ps -ef |more
UID PID PPID C STIME TTY TIME CMD
0 1 0 0 1:18PM ?? 0:17.59 /sbin/launchd
0 108 1 0 1:19PM ?? 0:01.35 /usr/sbin/syslogd
0 109 1 0 1:19PM ?? 0:02.64 /usr/libexec/UserEventAgent (System)
0 112 1 0 1:19PM ?? 0:00.23 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
0 113 1 0 1:19PM ?? 0:02.00 /usr/libexec/kextd
0 114 1 0 1:19PM ?? 0:07.95 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
0 115 1 0 1:19PM ?? 0:00.24 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
0 118 1 0 1:19PM ?? 0:02.77 /usr/sbin/systemstats --daemon
0 119 1 0 1:19PM ?? 0:01.36 /usr/libexec/configd
0 120 1 0 1:19PM ?? 0:06.82 /Applications/Pulse Secure.app/Contents/Plugins/JUNS/dsAccessService
0 121 1 0 1:19PM ?? 0:00.03 endpointsecurityd
0 122 1 0 1:19PM ?? 0:04.74 /System/L
# 동작중인 프로세스 중에 sendmail 이라는 이름의 프로세스를 찾아서 출력
$ ps aux |grep sendmail
# PID가 5231인 프로세스의 명을 출력
$ ps -p 5231 -o comm COMM
/Applications/KakaoTalk.app/Contents/MacOS/KakaoTalk
프로세스 상태를 트리 구조로 출력해주는 명령이다.
$ pstree [option]
동작중인 프로세스의 상태를 실시간으로 화면에 출력해주는 명령
프로세스의 상태, CPU, 메모리, 부하 상태도 확인할 수 있다.
$ top [option]
옵션 | 의미 |
---|---|
-d 갱신 시간 | 갱신 시간을 설정(초단위) |
-p(pid) | 특정 PID 값을 갖는 프로세스 모니터링할 때 사용 |
항목 | 의미 |
---|---|
PID | Process ID |
USER | 소유자 |
PR | Priority 우선순위 |
NI | Nice Value(-20~19 사이의 값으로 낮을수록 우선순위가 높아짐) |
VIRT | 작업에 의해 사용된 총 가상 메모리양 |
RES | 프로세스가 사용하는 실제 메모리양 |
SHR | 프로세스가 사용하는 공유 메모리양 |
S | 현재 프로세스 상태 |
%CPU | CPU 사용량 |
%MEM | 메모리 사용량 |
TIME+ | 프로세스가 시작하고 사용한 총 CPU 시간 |
COMMAND | 프로세스 실행 명령 |
명령 | 설명 |
---|---|
[SPACE] | 화면 갱신 |
k | kill 명령을 내린다. PID 값을 입력하면 종료 신호를 보냄 |
i | zombile, idle 프로세스 출력을 on/off |
n, # | 출력하는 프로세스 수 지정 |
q | top을 종료 |
r | Nice 값 변경 |
s | 화면 갱신시간 변경 |
F,f | 보여줄 항목을 추가하거나 삭제 |
O, o | 보여줄 항목 순서 변경 |
I | top의 맨 윗줄을 on/off한다. |
m | 메모리와 관련된 항목 on/off한다. |
t | 프로세스와 CPU 항목 on/off한다. |
c | Command line on/off한다. |
M | 프로세스 RSS값 지정 |
T | Time으로 값 정렬 |
P | $CPU 값으로 정렬 |
W | 바꾼 설정으로 저장 |
h, ? | 도움말 출력 |
$ top
Processes: 391 total, 3 running, 388 sleeping, 1524 threads 15:31:59
Load Avg: 1.98, 1.91, 1.92 CPU usage: 11.98% user, 9.36% sys, 78.64% idle SharedLibs: 254M resident, 73M data, 24M linkedit.
MemRegions: 55196 total, 3106M resident, 185M private, 1161M shared. PhysMem: 8001M used (1310M wired), 190M unused.
VM: 1944G vsize, 1991M framework vsize, 0(0) swapins, 0(0) swapouts. Networks: packets: 183314/180M in, 119708/17M out. Disks: 523418/6661M read, 233711/2098M written.
PID COMMAND %CPU TIME #TH #WQ #PORT MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV
440 iTerm2 30.3 01:22.79 14 11 410+ 123M+ 8364K- 7420K 440 1 sleeping *0[2891] 0.00389 1.34081 501 582435+ 2339 435965+ 75407+
223 WindowServer 20.9 09:36.78 9 4 1247+ 364M- 72M+ 16M 223 1 sleeping *0[1] 1.35059 0.00389 88 813320+ 34233 6754080+ 2836712+
16469 top 13.2 00:00.89 1/1 0 25 3660K 0B 0B 16469 79339 running *0[1] 0.00000 0.00000 0 6043+ 119 255337+ 127645+
0 kernel_task 4.8 04:53.93 174/4 0 0 168M+ 0B 0B 0 0 running 0[0] 0.00000 0.00000 0 23897 0 15732351+ 14233318+
167 hidd 2.4 01:04.55 6/1 3/1 264 2832K 0B 40K 167 1 running *0[1] 0.05842 0.00000 261 161386+ 170 504904+ 310846+
143 opendirector 0.4 00:18.91 9 8 1004 8076K 64K 96K 143 1 sleeping *0[1] 0.00000 0.15185 0 18002 180 159049+ 80360+
459 bash 0.3 00:01.51 1 0 11 440K 0B 0B 459 440 sleeping *0[1] 0.00000 0.00000 501 132033+ 86187+ 5761+ 2879+
126 logd 0.3 00:14.27 4 3 1178 19M 0B 1980K 126 1 sleeping *0[1] 0.00000 0.00000 0 116474+ 142 115144+ 116959+
프로세스에 특정한 시그널을 보내는 명령어
보통 중지시킬 수 없는 프로세스를 종료시킬 때 많이 사용
$ kill [option] [signal] [PID or $Job_number]
옵션 | 설명 |
---|---|
-l | 시그널 종류 출력 |
-s signal | 시그널의 이름 지정 |
$ kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2
# 프로세스 강제 종료(-9 KILL, SIGKILL)
$ kill -9 756 778 7700
# 프로세스 재시작(HUP or -1)
$ kill -HUP 10118
# 작업번호로 프로세스 종료
$ kill %2
# 기본 종료 시그널인 TERM을 보내어 종료
$ kill -s SIGTERM 1702
같은 데몬의 여러 프로세스를 한번에 종료시킬 때 사용하는 명령어로, 프로세스 명을 사용한다.
$ killall [option] 프로세스명
옵션 | 설명 |
---|---|
-l | 시그널 종류 출력(--list) |
-w | 시그널을 받은 프로세스들이 종료될 때까지 기다린다.(--wait) |
-v | 시그널 전송된 결과 출력(--verbose) |
-s signal | 시그널의 이름 지정(--signal) |
-u 사용자명 | 특정 사용자의 프로세스를 지정할 때 사용(--user) |
# Apache 웹 서버 데몬인 httpd를 모두 종료
$ killall httpd
# httpd 데몬을 재실행
$ killall -HUP httpd
# httpd 데몬에 9번(KILL, SIGKILL)을 전송하고, 전송결과 출력
$ killall -v -9 httpd
# example 사용자의 모든 프로세스 강제 종료
$ killall -u example
백그라운드로 실행중인 프로세스나 현재 중지된 프로세스 목록 출력
$ jobs [option]
옵션 | 설명 |
---|---|
-l | PID 번호를 추가 출력 |
백그라운드 프로세스를 포어그라운드 프로세스로 전환하는 명령
$ fg [%Job_number]
$ fg [Job_number]
# 백그라운드로 수행중인 작업이 여러 개라면, 가장 최근에 수행한 작업(+기호가 붙어있는)을 포어그라운드로 전환
$ fg
포어그라운드 프로세스를 백그라운드 프로세스로 전환하는 명령
: 포어그라운드로 실행중인 프로세르에 ctrl + z
를 눌러 작업을 일시 중지 시킨 후 bg명령을 사용해서 백그라운드로 전환할 수 있다.
$ bg
프로세스의 우선순위를 변경하는 명령어로, NI값을 설정할 때 사용한다. 프로세스에 설정되어 있는 NI 기본값은 0이고, 지정 가능한 범위는 -20~19이며, 작을 수록 우선순위가 높다. 일반 사용자는 NI값을 증가시키는 것만 가능하며, root만 NI값을 감소시켜 우선순위를 높일 수 있다.
$ nice [option] 프로세스명
옵션 | 설명 |
---|---|
-n 값, - 값 --adjustment=값 |
프로세스에 설정된 NI값을 지정한 NI값과 증감한다. 값을 지정하지 않으면 기본 10이다. |
$ nice -10 bash
$ nice --adjustment=10 bash
$ nice -n 10 bash
실행중이 ㄴ프로세스의 우선순위를 변경할 때 사용하는 명령으로, PID, USER, 그룹 ID를 주로 사용한다. renice는 주로 PID를 사용해 기존의 프로세스를 교체하여 조정하며, renice는 기존의 NI값에 상관없이 지정한 NI값이 바로 설정된다.
$ renice [option] NI PID
옵션 | 설명 |
---|---|
-p | PID 지정하는 옵션(--pid) |
-u | 사용자 지정하는 옵션(--user) |
-g | 프로세스 그룹 지정하는 옵션(--pgrp) |
프로세스 이름 기반으로 검색하는 명령으로 PID 값을 출력한다.
$ pgerp [option] [pattern]
옵션 | 설명 |
---|---|
-u | 특정 사용자가 실행중인 PID 출력 |
-U | 특정 UID가 실행중인 PID 출력 |
-g | 특정 그룹이 실행중인 PID 출력 |
-G | 특정 GID가 실행중인 PID 출력 |
-t | 특정 터미널에 실행중인 PID 출력 |
프로세스명을 사용해서 특정 프로세스에 시그널을 보내는 명령이다. 프로세스명과 사용자 및 그룹명 등으로 프로세스를 종료시킬 수 있다.
$ pkill [option] [pattern]
옵션 | 설명 |
---|---|
-u | 특정 사용자가 실행중인 PID |
-U | 특정 UID가 실행중인 PID |
-g | 특정 그룹이 실행중인 PID |
-G | 특정 GID가 실행중인 PID |
-t | 특정 터미널에 실행중인 PID |
$ pkill httpd