PS 명령어란?
현재 실행 중인 프로세스의 상태를 확인하는 데 사용되는 명령어
$ ps
PID TTY TIME CMD
4759 pts/0 00:00:00 bash
23724 pts/0 00:00:00 ps
- PID: 프로세스 ID
- TTY: 프로세스가 연결된 터미널 (예: pts/0, pts/1 등)
- TIME: 프로세스가 CPU를 사용한 총 시간
- CMD: 실행된 명령어
옵션
기본 옵션
옵션 | 의미 |
-A,-e | 실행 중인 모든 프로세스 출력 |
-a | 세션 리더와 연결된 프로세스를 제외하고, 존재하는 터미널에서 실행 중인 모든 프로세스 출력 |
a | 존재하는 터미널에서 실행 중인 모든 프로세스를 출력 |
-d | 현재 세션에서 부모 프로세스에 의해 생성된 자식 프로세스만 출력 |
r | 현재 실행 중인 프로세스만 출력 |
T | 현재 터미널에 연결된 프로세스 |
x | 현재 사용자가 실행 중인 모든 프로세스를 나열 |
목록 별 선택 옵션
옵션 | 의미 |
-C | 특정 CMD를 실행한 모든 프로세스 출력 |
-G | 특정 그룹에 속한 모든 프로세스 출력 |
-g | 특정 프로세스 그룹 ID (PGID)에 속한 모든 프로세스 출력 |
-p,p | 특정 프로세스 ID에 해당하는 프로세스를 출력 |
-s | 특정 세션 ID에 속한 모든 프로세스를 출력 |
-t | 특정 터미널(TTY)에 연결된 프로세스를 출력 |
-u | 특정 사용자에 의해 실행된 프로세스를 출력 |
출력 형식 옵션
옵션 | 의미 |
-f | full format으로 프로세스 정보를 출력 |
u | 프로세스의 CPU와 메모리 사용량을 함께 출력 |
-j | 작업에 관련된 ID를 출력 |
-o | 출력할 필드를 선택해서 프로세스 정보를 출력 |
-l | long format으로 프로세스 정보를 출력 |
ps -ef
실행중인 모든 프로세스를 추가적인 정보(UID, PPID, C, STIME)를 포함하여 출력
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul10 ? 00:05:54 /usr/sbin/init
root 27 1 0 Jul10 ? 00:00:42 /usr/lib/systemd/systemd-journald
root 35 1 0 Jul10 ? 00:00:02 /usr/lib/systemd/systemd-udevd
dbus 158 1 0 Jul10 ? 00:01:49 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --s
root 171 1 0 Jul10 ? 00:00:51 /usr/lib/systemd/systemd-logind
root 172 1 0 Jul10 ? 00:00:17 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 324 1 0 Jul10 ? 00:00:00 /usr/sbin/sshd -D
root 1493 0 0 Jul10 pts/1 00:00:00 /bin/bash
root 1551 1493 0 Jul10 pts/1 00:00:00 su - cubrid
cubrid 1552 1551 0 Jul10 pts/1 00:00:00 -bash
root 2931 324 0 10:49 ? 00:00:00 sshd: cubrid-10.2 [priv]
cubrid-+ 2933 2931 0 10:49 ? 00:00:00 sshd: cubrid-10.2@pts/2
root 2934 324 0 10:49 ? 00:00:00 sshd: cubrid-10.2 [priv]
cubrid-+ 2936 2933 0 10:49 pts/2 00:00:00 -bash
cubrid-+ 2958 2934 0 10:49 ? 00:00:00 sshd: cubrid-10.2@notty
cubrid-+ 2959 2958 0 10:49 ? 00:00:00 /usr/libexec/openssh/sftp-server
root 4462 324 0 11:19 ? 00:00:00 sshd: cubrid-10.2 [priv]
cubrid-+ 4464 4462 0 11:19 ? 00:00:00 sshd: cubrid-10.2@pts/0
root 4465 324 0 11:19 ? 00:00:00 sshd: cubrid-10.2 [priv]
cubrid-+ 4467 4464 0 11:19 pts/0 00:00:00 -bash
cubrid-+ 4488 4465 0 11:19 ? 00:00:00 sshd: cubrid-10.2@notty
cubrid-+ 4489 4488 0 11:19 ? 00:00:00 /usr/libexec/openssh/sftp-server
root 4756 4467 0 11:23 pts/0 00:00:00 su - cubrid
cubrid 4759 4756 0 11:23 pts/0 00:00:00 -bash
root 9054 1 0 Aug26 ? 00:00:00 /usr/sbin/crond -n
root 13842 2936 0 14:18 pts/2 00:00:00 su - cubrid
cubrid 13845 13842 0 14:18 pts/2 00:00:00 -bash
polkitd 17783 1 0 Jul23 ? 00:00:35 /usr/lib/polkit-1/polkitd --no-debug
cubrid 19867 4759 0 16:18 pts/0 00:00:00 ps -ef
root 28376 1 0 Jul24 ? 00:01:16 /usr/sbin/rsyslogd -n
- UID: 프로세스를 실행하는 사용자 ID
- PID: 프로세스 ID
- PPID: 부모 프로세스 ID
- C: 프로세스의 CPU 사용
- STIME: 프로세스가 시작된 시간
- TTY: 프로세스가 연결된 터미널
- TIME: 프로세스가 CPU를 사용한 총 시간
- CMD: 실행된 명령어
ps aux
실행 중인 모든 프로세스에 대한 CPU 사용량과 메모리 사용량을 보여줌
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 191660 3656 ? Ss Jul10 5:54 /usr/sbin/init
root 27 0.0 0.0 55800 19568 ? Ss Jul10 0:42 /usr/lib/systemd/systemd-journald
root 35 0.0 0.0 44060 1124 ? Ss Jul10 0:02 /usr/lib/systemd/systemd-udevd
dbus 158 0.0 0.0 58244 1060 ? Ss Jul10 1:49 /usr/bin/dbus-daemon --system --address=systemd: --nofor
root 171 0.0 0.0 26624 1280 ? Ss Jul10 0:51 /usr/lib/systemd/systemd-logind
root 172 0.0 0.0 260968 25532 ? Ssl Jul10 0:17 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopi
root 324 0.0 0.0 113004 356 ? Ss Jul10 0:00 /usr/sbin/sshd -D
root 1493 0.0 0.0 13500 8 pts/1 Ss Jul10 0:00 /bin/bash
root 1551 0.0 0.0 83560 0 pts/1 S Jul10 0:00 su - cubrid
cubrid 1552 0.0 0.0 13560 4 pts/1 S+ Jul10 0:00 -bash
root 2931 0.0 0.0 155572 6428 ? Ss 10:49 0:00 sshd: cubrid-10.2 [priv]
cubrid-+ 2933 0.0 0.0 155916 2636 ? S 10:49 0:00 sshd: cubrid-10.2@pts/2
root 2934 0.0 0.0 155572 6428 ? Ss 10:49 0:00 sshd: cubrid-10.2 [priv]
cubrid-+ 2936 0.0 0.0 13564 2168 pts/2 Ss 10:49 0:00 -bash
cubrid-+ 2958 0.0 0.0 155572 2308 ? S 10:49 0:00 sshd: cubrid-10.2@notty
cubrid-+ 2959 0.0 0.0 72352 2920 ? Ss 10:49 0:00 /usr/libexec/openssh/sftp-server
root 4462 0.0 0.0 155572 6424 ? Ss 11:19 0:00 sshd: cubrid-10.2 [priv]
cubrid-+ 4464 0.0 0.0 155916 2636 ? S 11:19 0:00 sshd: cubrid-10.2@pts/0
root 4465 0.0 0.0 155572 6424 ? Ss 11:19 0:00 sshd: cubrid-10.2 [priv]
cubrid-+ 4467 0.0 0.0 13560 2164 pts/0 Ss 11:19 0:00 -bash
cubrid-+ 4488 0.0 0.0 155572 2300 ? S 11:19 0:00 sshd: cubrid-10.2@notty
cubrid-+ 4489 0.0 0.0 72352 2724 ? Ss 11:19 0:00 /usr/libexec/openssh/sftp-server
root 4756 0.0 0.0 86480 2524 pts/0 S 11:23 0:00 su - cubrid
cubrid 4759 0.0 0.0 13560 2196 pts/0 S 11:23 0:00 -bash
root 9054 0.0 0.0 24272 1608 ? Ss Aug26 0:00 /usr/sbin/crond -n
root 13842 0.0 0.0 86480 2520 pts/2 S 14:18 0:00 su - cubrid
cubrid 13845 0.0 0.0 13560 2092 pts/2 S+ 14:18 0:00 -bash
polkitd 17783 0.0 0.0 614588 3152 ? Ssl Jul23 0:35 /usr/lib/polkit-1/polkitd --no-debug
cubrid 20211 0.0 0.0 53332 1876 pts/0 R+ 16:25 0:00 ps aux
root 28376 0.0 0.0 418012 11816 ? Ssl Jul24 1:16 /usr/sbin/rsyslogd -n
- USER: 프로세스를 실행하는 사용자 이름
- PID: 프로세스 ID
- %CPU: 해당 프로세스의 CPU 사용률
- %MEM: 해당 프로세스의 메모리 사용률
- VSZ: 가상 메모리 사용량 (KB 단위)
- RSS: 실제 메모리 사용량 (KB 단위)
- TTY: 프로세스가 연결된 터미널
- STAT: 프로세스 상태
- S(Sleep): 어떤 이벤트나 자원을 대기 중인 상태
- R(Running): 프로세스가 CPU에서 실행 중인 상태
- T (Stopped): 프로세스가 중지된 상태
- Z (Zombie): 프로세스가 종료되었지만 부모 프로세스가 종료 상태를 수집하지 않아 리소스 정리가 완료되지 않은 상태
- +: 포그라운드에서 실행되고 있는 프로세스 그룹에 속하는 프로세스
- 해당 프로세스 그룹은 현재 터미널과 상호작용 중
- s(Session Leader): 해당 프로세스가 세션 리더임을 뜻함
- 세션 리더: 새로운 세션을 시작한 최초의 프로세스
- START: 프로세스가 시작된 시간
- TIME: 프로세스가 CPU를 사용한 총 시간
- COMMAND: 실행된 명령어
기본 옵션 예시
-A, -e 옵션: 실행 중인 모든 프로세스 출력
$ ps -e
PID TTY TIME CMD
1 ? 00:05:52 systemd
27 ? 00:00:42 systemd-journal
35 ? 00:00:02 systemd-udevd
158 ? 00:01:49 dbus-daemon
171 ? 00:00:51 systemd-logind
172 ? 00:00:17 firewalld
324 ? 00:00:00 sshd
1493 pts/1 00:00:00 bash
1551 pts/1 00:00:00 su
1552 pts/1 00:00:00 bash
2434 ? 00:00:00 sshd
2436 ? 00:00:00 sshd
2437 ? 00:00:00 sshd
2439 pts/0 00:00:00 bash
2461 ? 00:00:00 sshd
2462 ? 00:00:00 sftp-server
2931 ? 00:00:00 sshd
2933 ? 00:00:00 sshd
2934 ? 00:00:00 sshd
2936 pts/2 00:00:00 bash
2958 ? 00:00:00 sshd
2959 ? 00:00:00 sftp-server
3697 pts/0 00:00:00 su
3701 pts/0 00:00:00 bash
3958 pts/0 00:00:00 ps
9054 ? 00:00:00 crond
17783 ? 00:00:35 polkitd
28376 ? 00:01:16 rsyslogd
-a 옵션: 세션 리더와 연결된 프로세스를 제외하고, 존재하는 터미널에서 실행 중인 모든 프로세스 출력
$ ps -a
PID TTY TIME CMD
1551 pts/1 00:00:00 su
1552 pts/1 00:00:00 bash
4756 pts/0 00:00:00 su
4759 pts/0 00:00:00 bash
13842 pts/2 00:00:00 su
13845 pts/2 00:00:00 bash
13895 pts/0 00:00:00 ps
a 옵션: 존재하는 터미널에서 실행 중인 모든 프로세스를 출력 (세션 리더도 포함)
- x 옵션 같이 사용하면 모든 프로세스를 출력
$ ps a
PID TTY STAT TIME COMMAND
1493 pts/1 Ss 0:00 /bin/bash
1551 pts/1 S 0:00 su - cubrid
1552 pts/1 S+ 0:00 -bash
2439 pts/0 Ss 0:00 -bash
2936 pts/2 Ss+ 0:00 -bash
3697 pts/0 S 0:00 su - cubrid
3701 pts/0 S 0:00 -bash
4090 pts/0 R+ 0:00 ps a
-d 옵션: 현재 세션에서 부모 프로세스에 의해 생성된 자식 프로세스만 출력 (세션 리더를 제외한 모든 프로세스)
- f 옵션을 추가로 줘서 PPID를 확인해보면 모든 프로세스가 부모 프로세스를 가지고 있음
$ ps -df
UID PID PPID C STIME TTY TIME CMD
root 1551 1493 0 Jul10 pts/1 00:00:00 su - cubrid
cubrid 1552 1551 0 Jul10 pts/1 00:00:00 -bash
cubrid-+ 2933 2931 0 10:49 ? 00:00:00 sshd: cubrid-10.2@pts/2
cubrid-+ 2958 2934 0 10:49 ? 00:00:00 sshd: cubrid-10.2@notty
cubrid-+ 4464 4462 0 11:19 ? 00:00:00 sshd: cubrid-10.2@pts/0
cubrid-+ 4488 4465 0 11:19 ? 00:00:00 sshd: cubrid-10.2@notty
root 4756 4467 0 11:23 pts/0 00:00:00 su - cubrid
cubrid 4759 4756 0 11:23 pts/0 00:00:00 -bash
cubrid 9035 4759 0 12:51 pts/0 00:00:00 ps -df
r 옵션: 현재 실행 중인 프로세스만 출력
- 출력되는 프로세스의 STAT는 R으로 실행 중인 상태
$ ps r
PID TTY STAT TIME COMMAND
11034 pts/0 R+ 0:00 ps r
T 옵션: 현재 터미널에 연결된 프로세스
$ ps T
PID TTY STAT TIME COMMAND
4467 pts/0 Ss 0:00 -bash
4756 pts/0 S 0:00 su - cubrid
4759 pts/0 S 0:00 -bash
13270 pts/0 R+ 0:00 ps T
$ tty # 현재 터미널 확인
/dev/pts/0
x 옵션: 현재 사용자가 실행 중인 모든 프로세스를 나열
$ ps x -f
UID PID PPID C STIME TTY STAT TIME CMD
cubrid 1552 1551 0 Jul10 pts/1 S+ 0:00 -bash
cubrid 4759 4756 0 11:23 pts/0 S 0:00 -bash
cubrid 13761 4759 0 14:16 pts/0 R+ 0:00 ps x -f
목록 별 선택 옵션 예시
-C 옵션: 특정 CMD를 실행한 모든 프로세스 출력
$ ps -C "su"
PID TTY TIME CMD
1551 pts/1 00:00:00 su
4756 pts/0 00:00:00 su
13842 pts/2 00:00:00 su
-G 옵션: 특정 그룹에 속한 모든 프로세스 출력
$ ps -G cubrid
PID TTY TIME CMD
1552 pts/1 00:00:00 bash
4759 pts/0 00:00:00 bash
13845 pts/2 00:00:00 bash
14812 pts/0 00:00:00 ps
-g 옵션: 특정 프로세스 그룹 ID (PGID)에 속한 모든 프로세스 출력
$ ps -o pgid,pid,comm # 특정 PGID를 알아내기
PGID PID COMMAND
1234 5678 bash
1234 5679 python
2345 6789 vim
$ ps -g 1234 # PGID 1234를 사용하는 모든 프로세스
PID TTY TIME CMD
5678 pts/0 00:00:00 bash
5679 pts/0 00:00:05 python
-p,p 옵션: 특정 프로세스 ID에 해당하는 프로세스를 출력
$ ps -p 4759
PID TTY TIME CMD
4759 pts/0 00:00:00 bash
$ ps -p 4756,4759
PID TTY TIME CMD
4756 pts/0 00:00:00 su
4759 pts/0 00:00:00 bash
-s 옵션: 특정 세션 ID에 속한 모든 프로세스를 출력
$ ps -s 4467 -f
UID PID PPID C STIME TTY TIME CMD
cubrid-+ 4467 4464 0 11:19 pts/0 00:00:00 -bash
root 4756 4467 0 11:23 pts/0 00:00:00 su - cubrid
cubrid 4759 4756 0 11:23 pts/0 00:00:00 -bash
cubrid 15485 4759 0 14:50 pts/0 00:00:00 ps -s 4467 -f
-t 옵션: 특정 터미널(TTY)에 연결된 프로세스를 출력
$ ps -t pts/1
PID TTY TIME CMD
1493 pts/1 00:00:00 bash
1551 pts/1 00:00:00 su
1552 pts/1 00:00:00 bash
-u 옵션: 특정 사용자에 의해 실행된 프로세스를 출력
$ ps -u cubrid -f
UID PID PPID C STIME TTY TIME CMD
cubrid 1552 1551 0 Jul10 pts/1 00:00:00 -bash
cubrid 4759 4756 0 11:23 pts/0 00:00:00 -bash
cubrid 13845 13842 0 14:18 pts/2 00:00:00 -bash
cubrid 17402 4759 0 15:29 pts/0 00:00:00 ps -u cubrid -f
출력 형식 옵션 예시
-f 옵션: full format으로 프로세스 정보를 출력, UID, PPID 등이 함께 출력됨
$ ps -f
UID PID PPID C STIME TTY TIME CMD
cubrid 4759 4756 0 11:23 pts/0 00:00:00 -bash
cubrid 18004 4759 0 15:41 pts/0 00:00:00 ps -f
u 옵션: 프로세스의 CPU와 메모리 사용량을 함께 출력
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cubrid 1552 0.0 0.0 13560 4 pts/1 S+ Jul10 0:00 -bash
cubrid 4759 0.0 0.0 13560 2196 pts/0 S 11:23 0:00 -bash
cubrid 13845 0.0 0.0 13560 2092 pts/2 S+ 14:18 0:00 -bash
cubrid 18939 0.0 0.0 53332 1876 pts/0 R+ 16:00 0:00 ps u
-j 옵션: 작업에 관련된 ID를 출력
$ ps -j
PID PGID SID TTY TIME CMD
1917 1917 31628 pts/0 00:00:00 ps
31670 31670 31628 pts/0 00:00:00 bash
- PGID (Process Group ID): 프로세스가 속한 그룹 ID
- SID (Session ID): 세션 ID, 하나의 세션을 구성하는 모든 프로세스들이 공유하는 ID
-o 옵션: 출력할 필드를 선택해서 프로세스 정보를 출력
$ ps -o pid,uid,comm
PID UID COMMAND
16530 1000 bash
17366 1000 ps
-l 옵션: long format으로 프로세스 정보를 출력
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 1000 16530 16527 0 80 0 - 3390 do_wai pts/0 00:00:00 bash
0 R 1000 17459 16530 0 80 0 - 12802 - pts/0 00:00:00 ps
- F (Flags): 프로세스의 플래그
- 플래그: 프로세스의 상태와 속성을 설명하는 다양한 비트마스크 값
- S (Process State): 프로세스의 현재 상태
- C (CPU Usage): 프로세스가 사용 중인 CPU의 비율
- PRI (Priority): 프로세스의 우선순위
- NI (Nice Value): 프로세스의 '니스(nice)' 값
- 프로세스의 우선순위에 영향을 주며, 낮은 값일수록 높은 우선순위
- ADDR: 프로세스가 사용하는 커널 메모리 주소
- SZ (Size): 프로세스가 사용하는 가상 메모리 페이지의 수
- 실제 가상 메모리 사용량은 SZ * 페이지 크기(일반적으로 4KB)
- WCHAN (Waiting Channel): 프로세스가 현재 대기 중인 커널 함수의 이름
'Linux' 카테고리의 다른 글
[Linux] free 명령어 (메모리 상태) (0) | 2024.09.13 |
---|---|
[Linux] top 명령어 (시스템 및 프로세스 상태) (0) | 2024.09.13 |
[Linux] watch, head, tail 명령어 (0) | 2024.09.03 |
[Linux] date 명령어 (0) | 2024.09.03 |
[Linux] 실행 중인 프로세스 백그라운드로 변경하기 (0) | 2024.09.03 |