[Linux] ps command

GilLog·2021년 1월 12일
0

Linux

목록 보기
3/6

🙆‍♂️ 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 등을 지정할 수 있다.
-M64비트 프로세스들을 보여준다.
-m프로세스들 뿐만 아니라 커널 스레드들도 보여준다.
-p특정 PID를 지정할 때 사용합니다.
-r현재 실행 중인 프로세서를 보여준다.
u (BSD계열)프로세스의 소유자를 기준으로 출력한다.
ps ax만 하면 USER 기준의 정보가 안뜨는데, aux 이렇게 같이 보통 써준다.
-u특정 사용자의 프로세스 정보를 확인할 때 사용한다.
사용자를 지정하지 않으면 현재 사용자를 기준으로 정보를 출력한다.
x (BSD계열)데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력한다.
보통 a옵션과 결합하여 모든 프로세스를 출력할 때 사용한다.
-x로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다.
유닉스 시스템은 사용자가 로그아웃 한 후에도
임의의 프로세서가 계속 동작하게 할 수 있다.
그러면 그 프로세서는 자신을 실행시킨 셸이 없이도
계속 자신의 일을 수행하는데 이러한 프로세스는
일반적인 ps 명령으로 확인할 수 없다.
이 때 -x 옵션을 사용하면 자신의 터미널이 없는 프로세서들을 확인할 수 있다.

출력 항목

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


사용 예제

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를 출력.

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글