명령어 ps는 Process Status의 약자로, 현재 시스템 상에서 작동 중인 프로세스를 확인할 수 있는 명령어다.

ps 명령어는 여러가지의 옵션이 있는데, System V 계열은 대시(dash, -)를 사용하고, BSD 계열은 대시(-)를 사용하지 않는다. GNU에서의 옵션 표기는 두 개의 대시(--)를 사용하므로, ps 에서의 정확한 옵션 사용은 매우 중요하다.

 

 

* System V 계열 - 상용 유닉스. 솔라리스 및 리누스토발즈의 커널을 기점으로 하는 다양한 리눅스 (사실상 'BSD'라는 말이 붙지 않는 모든 리눅스 라고 보면 됨.)

  BSD 계열 - macOS, iOS, FreeBSD, GhostBSD, OpenBSD 등


우선 ps의 유용한 사용법을 보기 전, ps를 입력했을 때 나타나는 결과 항목들이 무엇을 의미하는지부터 짚고 넘어가자!

 

ps 출력 항목

  • USER : BSD 계열에서 나타나는 항목으로 프로세스 소유자의 이름
  • UID : System V 계열에서 나타나는 항목으로 프로세스 소유자의 이름
  • PID : 프로세스 식별 번호
  • PPID : 부모 프로세스 ID
  • %CPU : CPU 사용 비율의 추정치 (BSD)
  • %MEM : 메모리 사용 비율의 추정치 (BSD)
  • VSZ : KB 단위 또는 페이지 단위의 가상 메모리 사용량
  • RSS : 실제 메모리 사용량 (Resident Set Size)
  • TTY : 프로세스와 연결된 터미널
  • S / STAT : 현재 프로세스의 상태 코드 (S : System V  / STAT : BSD)
  • TIME : 총 CPU 사용 시간
  • COMMAND : 프로세스의 실행 명령행
  • STIME : 프로세스가 시작된 시간 혹은 날짜
  • C / CP : 짧은 시간 동안의 CPU 사용률 (C: System V / CP : BSD)
  • F : 프로세스의 플래그
  • PRI : 실제 실행 우선순위
  • NI : nice 우선순위 번호

ps 옵션

사용법 : $ ps [option]

 

System V 계열

  • -A : 모든 프로세스를 출력.
  • -a : 세션 리더(일반적으로 로그인 쉘)을 제외하고, 데몬 프로세스처럼 터미널에 종속되지 않은 모든 프로세스를 출력.
  • -e : 커널 프로세스를 제외한 모든 프로세스를 출력.
  • -f  : 풀 포맷으로 보여줌. System V 스타일로 출력해주어, UID, PID, PPID 등이 함께 표시됨.
  • -l : 긴 포맷으로 보여줌. 프로세스의 정보를 길게 보여주는 옵션으로 우선순위와 관련된 PRI와 NI값을 확인 가능.
  • -o [value] : 출력 포맷을 지정하는 옵션으로, [value]로 pid, tty, time, cmd 등을 지정할 수 있음.
  • -M : 64비트 프로세스들을 보여줌.
  • -m : 프로세스들 뿐만 아니라 커널 스레드드들도 함께 보여줌.
  • -p : 특정 PID를 지정할 때 사용.
  • -r : 현재 실행 중인 프로세서를 보여줌.
  • -u : 특정 사용자의 프로세스 정보를 확인할 때 사용. 사용자를 지정하지 않으면 현재 사용자를 기준으로 정보를 출력.
  • -x : 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여줌. 유닉스 시스템은 사용자가 로그아웃한 후에도 임의의 프로세서가 계속 동작하게 할 수 있는데, 이 말은 해당 프로세서는 자신을 실행시킨 쉘이 없어도 계속 자신의 일을 수행한다는 말임. 이 때 -x 옵션을 통해, 자신의 터미널이 없는 프로세서들을 확인할 수 있음.

 

BSD 계열

  • a : 터미널과 연관된 프로세스를 출력하는 옵션. 보통 x 옵션과 연계하여 모든 프로세스를 출력할 때 사용.
  • l : 긴 포맷으로 보여줌. 프로세스의 정보를 길게 보여주는 옵션으로 우선순위와 관련된 PRI와 NI값을 확인 가능.
  • u : 프로세스의 소유자를 기준으로 출력. (ps ax 만 하면 USER 기준의 정보가 안 뜸. 따라서 aux 로 대부분 씀.)
  • x : 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력. 보통 a 옵션과 결합하여 모든 프로세스를 출력할 때 사용.
  • ww : 터미널 창을 넓게 하여 긴 출력결과물까지 잘리지 않게 모두 보여줌.

유용한 ps 명령문 예제

 

1. 현재 쉘(Shell)의 모든 프로세스 나열

$ ps

 

2-1. System V 계열 -  '모든 프로세스'를 출력

$ ps -A

$ ps -e (커널 프로세스 제외.)

 

2-2. BSD 계열 - '모든 프로세스'를 출력

$ ps axu

 

3. 커널 제외 모든 프로세스를 'Full Foramt'으로 출력.

$ ps -ef

$ ps -eF (-F: Extra Full-Format)

 

4. 실제 사용자 ID(RUID) 또는 이름을 기준으로 프로세스 출력. (-U: RUID 기준 / -u : EUID 기준)

$ ps -fU junho

$ ps -fu 1000 ($ id => 현재 로그인한 사용자의 숫자로 된 아이디 확인 가능.)

 

5. 루트 사용자 권한으로 실행중인 모든 프로세스를 사용자 형식으로 출력.

$ ps -U root -u root u

 

6. 특정 그룹(RUID or 그룹이름)이 소유한 모든 프로세스를 출력.

$ ps -fG [그룹ID or 그룹이름]

ex) $ ps -fG apache

 

7-1. 특정 PID의 프로세스 확인.

$ ps -fp [PID] (PID ,(comma)로 복수 입력 가능)

 

7-2. 특정 PPID의 프로세스 확인.

$ ps -f --ppid [PPID]

 

8. 특정 tty로 프로세스 확인.

$ ps -t [tty]

 

9. 시스템 프로세스가 서로 연결되는 방식을 보는 방법. (부모가 종료된 프로세스는 init or systemd에 의해 채택됨.)

$ ps -e --forest

 

10. 출력 포맷 지정하여 프로세스 출력.

$ ps -eo [출력 포맷들]

ex) ps -eo pid,ppid,user,cmd

 

11. 프로세스 이름으로 특정 프로세스를 출력.

$ ps -C [프로세스이름]

ex) ps -C

 

12. 특정 프로세스의 실행된 시간을 확인.

$ ps -eo comm,etime,user | grep [프로세스이름]

 

13. 가장 높은 메모리 및 CPU 사용량을 가지는 프로세스 출력.

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

 

14. 응답하지 않거나 높은 CPU 점유시간을 가지는 프로세스 조회.

$ ps -A | grep -i stress

 

15. 보안 컨텍스트를 표시하여 프로세스 조회.

$ ps -eM

$ ps --context

 

 

참고

https://ko.linux-console.net/?p=2219 

 

"Linux 프로세스 모니터링을위한 30 가지 유용한 'ps 명령'예제"

"Linux 프로세스 모니터링을위한 30 가지 유용한 'ps 명령'예제" "ps (프로세스 상태)는 시스템에서 실행중인 프로세스 선택과 관련된 정보를보기위한 기본 Unix/Linux 유틸리티입니다./proc 파일 시스템

ko.linux-console.net

https://jhnyang.tistory.com/268

 

[리눅스, 유닉스] ps 프로세스 명령어 완벽정리, 프로세스 관리, 계열에 따른 옵션 차이, 조건에

[리눅스 유닉스 포스팅 링크 모음] 안녕하세요 오늘 들고온 포스팅은 ps 명령어 관련입니다. 프로세스(process)의 약자로 추정되는 명령어 ps는 현재 돌아가고 있는 프로세스를 확인할 수 있는 명령

jhnyang.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기