Linux

[바미] PS에 대해 알아보자!

Bami 2021. 1. 18. 15:09
728x90
반응형

ps

ps프로세스의 상태를 확인하는 명령어이다.

현재 특정 프로세스가 실행되고 있는지 실행되는 프로세스가 어떤 pid를 갖고 있는지 등

확인하는데 많이 쓰이며, 옵션을 통해 CPU와 메모리 점유율등의 상세 정보도 확인할 수 있다.

ps [옵션]

[root@localhost ~]# ps
PID  TTY    TIME   CMD
1340 tty1 00:00:01 bash
1500 tty1 00:00:00 ps

옵션

옵션 내용
-A 모든 프로세스를 출력한다.
a (BSD계열) 터미널과 연관된 프로세스를 출력하는 옵션이다.
보통 x 옵션과 연계하여 모든 프로세스를 출력할 때 사용한다.
-a 세션 리더(일반적으로 로그인 셸)을 제외하고 데몬 프로세스처럼
터미널에 종속되지 않은 모든 프로세스를 출력한다.
-e 커널 프로세스를 제외한 모든 프로세스를 출력해 준다.
-f 풀 포맷으로 보여준다.
유닉스 스타일로 출력해주는 옵션으로 UID, PID, PPID등이 함께 표시된다.
-l (sys V), l (BSD계열) 긴 포맷으로 보여준다.
프로세스의 정보를 길게 보여주는 옵션으로 우선순위와 관련된 PRI와 NI값을 확인할 수 있다.
-o 값 64비트 프로세스들을 보여준다.
-M 모든 프로세스를 출력한다.
-m 프로세스들 뿐만 아니라 커널 스레드들도 보여준다.
-p 현재 실행 중인 프로세서를 보여준다.
u (BSD계열) 프로세스의 소유자를 기준으로 출력한다.
ps ax만 하면 USER 기준의 정보가 안뜨는데, aux 이렇게 같이 보통 써준다.
-u 특정 사용자의 프로세스 정보를 확인할 때 사용한다.
사용자를 지정하지 않으면 현재 사용자를 기준으로 정보를 출력한다.
x (BSD계열) 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력한다.
보통 a옵션과 결합하여 모든 프로세스를 출력할 때 사용한다.
-x 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다.
유닉스 시스템은 사용자가 로그아웃 한 후에도 임의의 프로세서가 계속 동작하게 할 수 있다.
그러면 그 프로세서는 자신을 실행시킨 셸이 없이도 계속 자신의 일을 수행하는데 이러한 프로세스는 일반적인 ps 명령으로 확인할 수 없다.
이 때 -x 옵션을 사용하면 자신의 터미널이 없는 프로세서들을 확인할 수 있다.

출력 항목

항목 설명
PID 프로세스의 아이디, 식별변호
PPID 부모 프로세스 ID
UID SYSTEM V계열에서 나타나는 항목으로 프로세스 소유자의 이름
TTY 프로세스를 제어하는 수단, 프로세스와 연결된 터미널로콘솔접속시 "tty숫자" 행태로 표시되며,
원격이나 에뮬레이터 접속시 "pts/숫자" 형태로 표시
TIME 프로세스에 사용된 CPU 시간
CMD 프로세스 실행 명령어
COMMAND 프로세스의 실행 명령행
USER BSD계열에서 나타나는 항목으로 프로세스 소유자의 이름
%CPU CPU 사용 비율의 추정치(BSD)
%MEM 메모리의 사용 비율의 추정치 (BSD)
VSZ K단위 또는 페이지 단위의 가상메모리 사용량
RSS 실제 메모리 사용량 (Resident Set Size)
S, STAT 현재 프로세스의 상태 코드 (S: Sys V, STAT: BSD)
STIME 프로세스가 시작된 시간 혹은 날짜
C, CP 짧은 기간 동안의 CPU 사용률 (C: Sys V, CP: BSD)
F 프로세스의 플래그
PRI 실제 실행 우선순위
NI nice 우선순위 번호

 

사용 예제

ps -ef

ps -efSystem V 계열 옵션으로 시스템에 동작중인 모든 프로세스를 full format으로 자세하게 출력한다.

ps -efps명령어에 두가지 옵션 e,f를 추가한 것이다.

e는 모든 프로세스를 표시하는 것이고, f는 프로세스의 정보를 더 많이 보여주도록 하는 옵션이다.

일반적으로 ps명령어 사용시 자주 사용하는 옵션 조합이다.

하지만 ps -ef 만을 사용하면 많은 프로세스가 한번에 표시되기 때문에 grep 명령어로 원하는 키워드를 가려서 사용한다.

ps -ef | grep '프로세스명'
[root@localhost ~]# ps -ef

UID   PID PPID C STIME TTY      TIME CMD

root    1    0 0 20:20 ?    00:00:03 /bin/init

root    2    0 0 20:20 ?    00:00:00 [kthreadd]

                     ㆍ
                     ㆍ
                     ㆍ

root 1385    0 0 21:30 tty1 00:00:01 -bash

root 1593 1381 0 21:44 tty1 00:00:00 ps -ef

ps -el | head

대부분 'ps -ef'로 충분한데 프로세스 상태나 우선순위를 확인하고 싶을 경우 -l 옵션으로 확인해준다.
긴 포맷으로 출력하고 싶을 경우 -l 옵션을 사용

 

'ps -ef'에서 보이지 않았던, F, S, PRI, NI, ADDR~ 등등 더 많은 정보들이 출력된다.

ps ax

시스템에 동작중인 모든 프로세스를 보고 싶을 때 위와 같은 명령어를 사용하면 BSD 포맷으로 출력한다.

UNIX에서는 주로 ps -e와 비슷하다.

PID, TTY, STAT, TIME, COMMAND 정보가 출력되는데, 사용자 기준의 다양한 정보들을 출력해주고 싶으면 u옵션을 껴서 aux로 명령어를 구성해주면 된다.

ps aux

BSD 계열에선 'ps aux'를 ps -ef 처럼 가장 많이 사용한다.

ps aux | grep '프로세스명'

ps -fp [PID]

-p 옵션을 통해 PID를 키워드로 프로세스 정보를 확인하는 방법이다.

ps -U gillog -u gillog

특정 사용자가 돌리는 프로세스의 정보를 알고 싶을 때 real uid와 uid를 의미하는 옵션으로 선택할 수 있다.

위 예시는 gillog가 돌리는 프로세스를 확인하는 명령어

ps -t pts/18

-t 옵션으로 특정 TTY에서 실행되는 프로세스를 선택해 확인할 수 있다.

ps -e -o pid,ppid,uname,pcpu,pmem,comm,tty | head

-o 옵션을 사용하면 원하는 항목만 보이도록 포맷 설정을 할 수 있다.

ps -p 1222 -o comm=

PID가 1222인 프로세스의 이름을 출력.

ps -C httpd -o pid=

이름이 httpd인 프로세스들의 pid를 출력.

 

참고 

jhnyang.tistory.com/268

 

728x90
반응형