Linux에서 ps는 "프로세스 상태"를 나타내며 시스템에서 현재 실행 중인 프로세스에 대한 정보를 제공하는 데 사용되는 명령줄 유틸리티입니다. 이를 통해 사용자는 프로세스, 상태 및 이와 관련된 다양한 속성을 모니터링할 수 있습니다. ps 명령은 일반적으로 프로세스 관리, 문제 해결 및 시스템 모니터링에 사용됩니다.
ps 명령의 기본 구문은 다음과 같습니다.
## ps [options]
$ ps
PID TTY TIME CMD
778 pts/0 00:00:00 bash
1040 pts/0 00:00:00 ps
일반적으로 사용되는 몇 가지 옵션은 다음과 같습니다.
aux :
가장 일반적으로 사용되는 옵션 중 하나입니다.
/*
다른 사용자에게 속한 프로세스를 포함하여 시스템에서 실행 중인 모든 프로세스의 자세한 목록을 표시합니다.
프로세스 ID(PID), 프로세스와 관련된 터미널(TTY), CPU 및 메모리 사용량, 프로세스 상태(STAT),
시작 시간 및 프로세스를 시작한 명령(CMD)을 보여줍니다
*/
/*
VSZ는 "가상 메모리 크기"를 나타냅니다.
실제 RAM(상주 메모리)과 스왑 공간(있는 경우)을
모두 포함하는 프로세스에서 사용하는총 가상 메모리를 나타냅니다
RSS는 "Resident Set Size"를 의미하고 실제로 메모리에 상주하고 있는 메모리 사이즈 를 의미합니다.
현재 RAM에 있고 CPU에서 쉽게 액세스할 수 있는 프로세스에서 사용하는 실제 메모리입니다
*/
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 170084 12104 ? Ss 08:58 0:00 /sbin/init
root 2 0.0 0.0 2324 1256 ? Sl 08:58 0:00 /init
root 5 0.0 0.0 2352 80 ? Sl 08:58 0:00 plan9 --control-socket 6 --log-level 4 --server-fd 7 --pipe-fd 9 --log-truncate
root 59 0.0 0.1 52112 15748 ? S<s 08:58 0:00 /lib/systemd/systemd-journald
root 83 0.0 0.0 22316 6496 ? Ss 08:58 0:00 /lib/systemd/systemd-udevd
systemd+ 101 0.0 0.0 19084 7768 ? Ss 08:58 0:00 /lib/systemd/systemd-networkd
root 281 0.0 0.0 3764 1756 ? Ss 08:58 0:00 snapfuse /var/lib/snapd/snaps/core20_1974.snap /snap/core20/1974 -o ro,nodev,allow_other,suid
root 283 0.0 0.0 3516 176 ? Ss 08:58 0:00 snapfuse /var/lib/snapd/snaps/core20_1950.snap /snap/core20/1950 -o ro,nodev,allow_other,suid
root 287 0.0 0.0 3832 1428 ? Ss 08:58 0:00 snapfuse /var/lib/snapd/snaps/lxd_24061.snap /snap/lxd/24061 -o ro,nodev,allow_other,suid
root 289 0.0 0.0 3516 200 ? Ss 08:58 0:00 snapfuse
e :
이 옵션은 연결된 터미널에 관계없이 시스템의 모든 프로세스에 대한 정보를 표시하는 데 사용됩니다.
tmdqls6625@L-sbhyun:~$ ps e
PID TTY STAT TIME COMMAND
778 pts/0 Ss 0:00 -bash HOSTTYPE=x86_64 LANG=C.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Progra
981 pts/1 S+ 0:00 -bash HOME=/home/tmdqls6625 SHELL=/bin/bash USER=tmdqls6625 LOGNAME=tmdqls6625 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/us
1047 pts/0 R+ 0:00 ps e SHELL=/bin/bash WSL2_GUI_APPS_ENABLED=1 WSL_DISTRO_NAME=Ubuntu-20.04 WT_SESSION=3136fc7e-5322-4472-bd35-441bfc2bd7a2 NAME=L-sbhyun PWD=/home/tmdqls6625 LO
f :
"forest" 옵션은 부모-자식 관계를 보여주는 프로세스의 계층적 트리 보기를 표시합니다.
$ ps f
PID TTY STAT TIME COMMAND
981 pts/1 S+ 0:00 -bash
778 pts/0 Ss 0:00 -bash
1052 pts/0 R+ 0:00 \_ ps f
u :
이 옵션은 프로세스 소유자의 사용자 이름을 포함하여 프로세스에 대한 자세한 정보를 표시합니다.
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tmdqls6+ 778 0.0 0.0 10060 5068 pts/0 Ss 08:58 0:00 -bash
tmdqls6+ 981 0.0 0.0 10024 4884 pts/1 S+ 08:58 0:00 -bash
tmdqls6+ 1107 0.0 0.0 10620 3236 pts/0 R+ 10:03 0:00 ps
x :
이 옵션은 터미널과 연결되지 않은 백그라운드 프로세스를 표시합니다.
$ ps x
PID TTY STAT TIME COMMAND
778 pts/0 Ss 0:00 -bash
973 ? Ss 0:00 /lib/systemd/systemd --user
974 ? S 0:00 (sd-pam)
981 pts/1 S+ 0:00 -bash
1110 pts/0 R+ 0:00 ps x
ps는 grep 과 같이 사용하여 원하는 값만 찾을 수 있습니다
ps aux | grep nginx
root 425 0.0 0.0 51216 1500 ? Ss 08:58 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 426 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 427 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 428 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 429 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 430 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 431 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 432 0.0 0.0 51780 5192 ? S 08:58 0:00 nginx: worker process
www-data 433 0.0 0.0 51780 5184 ? S 08:58 0:00 nginx: worker process
tmdqls6+ 1124 0.0 0.0 8168 720 pts/0 S+ 10:08 0:00 grep --color=auto nginx