[Linux] ps command

3 분 소요

🙆‍♂️ import 🙇‍♂️

Linux ps (프로세스 확인하기)[IT 지식창고 - 창공]

[리눅스, 유닉스] ps 프로세스 명령어 완벽정리, 프로세스 관리, 계열에 따른 옵션 차이, 조건에 맞게 프로세스 정보 추출하기[양햄찌가 만드는 세상]


ps

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

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

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

ps [옵션]

[gillog@localhost ~]# ps
PID  TTY    TIME   CMD
1380 tty1 00:00:01 bash
1525 tty1 00:00:00 ps

옵션

옵션 내용
-A 모든 프로세스를 출력한다.
a (BSD계열) 터미널과 연관된 프로세스를 출력하는 옵션이다.
보통 x 옵션과 연계하여 모든 프로세스를 출력할 때 사용한다.
-a 세션 리더(일반적으로 로그인 셸)을 제외하고 데몬 프로세스처럼
터미널에 종속되지 않은 모든 프로세스를 출력한다.
-e 커널 프로세스를 제외한 모든 프로세스를 출력해 준다.
-f 풀 포맷으로 보여준다.
유닉스 스타일로 출력해주는 옵션으로 UID, PID, PPID등이 함께 표시된다.
-l (sys V),
l (BSD계열)
긴 포맷으로 보여준다.
프로세스의 정보를 길게 보여주는 옵션으로 우선순위와 관련된 PRI와 NI값을 확인할 수 있다.
-o 값 출력 포맷을 지정하는 옵션으로 값으로는 pid, tty, time, cmd 등을 지정할 수 있다.
-M 64비트 프로세스들을 보여준다.
-m 프로세스들 뿐만 아니라 커널 스레드들도 보여준다.
-p 특정 PID를 지정할 때 사용합니다.
-r 현재 실행 중인 프로세서를 보여준다.
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 -ef’는** System V 계열 옵션으로 시스템에 동작중인 모든 프로세스를 full format으로 **자세하게 출력한다.

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

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


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

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

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

UID   PID PPID C STIME TTY      TIME CMD

root    1    0 0 21:20 ?    00:00:05 /sbin/init

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

                     ㆍ
                     ㆍ
                     ㆍ

root 1380    0 0 21:25 tty1 00:00:01 -bash

root 1594 1380 0 21:38 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를 출력.

태그: ,

카테고리:

업데이트:

댓글남기기