리눅스 마스터 2급 기출에서 ps 명령어에 대한 문제가 나오니 알아두셔야 합니다
ps 란?
process status의 약자라고 합니다
즉, 프로세스의 상태를 확인할 수 있는 명령어 입니다
해당 명령어를 이용해서 현재 실행중인 프로세스목록과 상태를 알 수 있습니다
ps 사용
$ ps [옵션]
ps 만으로 사용가능하며 옵션과 같이 사용할 수도 있습니다
옵션은 man 페이지나 --help를 이용하여 확인해보겠습니다
ps 옵션
$ ps --help a
위 명령어를 입력해보면 아래와 같이 정말 많은 명령어들을 볼 수 있습니다
더 자세한 설명이 궁금하시다면 'man ps' 명령어를 이용해 확인할 수 있습니다
예제들 까지 확인할 수 있습니다 (물론 영어ㅎㅎㅎ)
-(대시)가 붙냐 안 붙냐에 따라서 옵션이 달라짐을 아셔야 합니다
타입 |
옵션 |
설명 |
프로세스 선택 |
a |
BSD 계열. '-'가 없음. 이 옵션을 사용하면 ps가 모든 프로세스를 터미널(tty)과 함께 나열하거나 x 옵션과 함께 사용할 경우 모든 프로세스를 나열합니다 |
프로세스 선택 |
-a |
세션 리더 & 터미널과 연관된 프로세스를 제외하고 모든 프로세스를 보여줍니다. |
프로세스 선택 |
-A, -e |
모든 프로세스를 보여주며 -e 옵션과 동일합니다 |
프로세스 선택 |
r |
현재 실행중인 프로세스만 선택해서 보여줍니다 |
프로세스 선택 |
x |
BSD 계열. 이 옵션을 선택하면 ps가 사용자가 소유한 모든 프로세스(같은 EUID)를 나열하거나 옵션과 함께 사용할 경우 모든 프로세스를 나열하는 것입니다. (TTY 값이 ? 인 프로세스들도 나오게 됨) |
리스트로 프로세스 선택 |
-p |
프로세스 ID를 특정해서 확인할 수 있습니다 |
포맷팅 |
u |
유저중심 형식으로 보여줍니다. 프로세스가 어느 유저로 실행되었는지도 보여줍니다. |
포맷팅 |
f |
Fully 포맷 형태를 보여줍니다. |
포맷팅 |
-o |
유저가 정의한 포맷팅으로 보여줍니다. (-o pid,format,state,tname,time,cmd) |
쓰레드 |
m, -m |
프로세스 다음에 스레드 정보도 보여줍니다 |
직접 써보시면 이런거구나 알 수 있습니다
ps가 보여주는 컬럼들 의미
아래 내용은 모두 꼭 외우셔야 합니다
- USER: 프로세스를 소유한 사용자
- PID: process ID
- %CPU: cpu 사용률
- $MEM: memory 사용률
- VSZ: 가상 메모리 사용량
- RSS: 실제 메모리 사용량
- TTY: 프로세스를 컨트롤 하는 터미널
- STAT: 현재 프로세스의 상태
- START: 프로세스 시작날
- TIME: 프로세스가 지금까지 사용한 CPU 시간
- COMMAND: 프로세스 실행할때 사용된 CMD
프로세스 상태 (STAT)
- S: interruptible sleep (event를 완료하기 위해 기다리는 상태)
- R: Running or runnable (on run queue)
- I: Idle kernel thread
- Z: Zombie 프로세스 상태(죽었는데 시체만 남아있는 느낌)
- D: Uninterruptible sleep. 입출력 기다리는 상태
- T: job control signal에 의해 멈춰있는 상
- 이 외에 t, W, X 상태도 존재하며 R, S, I, Z 정도 암기!!
ps 명령어 사용
1. ps -e (ps ax)
해당 명령어를 사용하면 모든 프로세스를 보여주게됩니다. 허나 소유자 정보는 없습니다.
2. ps -ef (ps aux)
위 명령어는 모든 프로세스에 대한 정보를 full-format으로 볼 수 있습니다. 프로세스의 소유자 정보까지 확인할 수 있습니다
3. ps -ef | grep nginx
돌고 있는 프로세스 목록을 뽑아서 그 중에 nginx 가 정상적으로 돌고 있나 확인하는 등
grep과 묶어서 다양하게 이용할 수도 있습니다
4. ps -fp [pid]
가끔 특정 프로세스의 pid를 이용해 확인할 수 있습니다
5. ps -U root -u root u
man 페이지에도 나온 예시로 RUID와 EUID를 이용해 특정 사용가 중심으로 프로세스를 확인할 수 있습니다
-U: RUID, -u: EUID, u: user정보 출력
6. kill -9 [pid]
kill을 이용해 죽이기 위해서 ps 명령어를 이용해 pid를 확인하기도 합니다