728x90
반응형
PS


◆ 시스템에서 현재 수행되고 있는 프로세스를 확인하는 기초 명령어 



◆ Ex)
[root@agentlinux ~]# ps -ef | grep sshd
root     11916 31937  0 11:06 ?        00:00:00 sshd: linuxer [priv]
linuxer 11918 11916  1 11:06 ?        00:04:40 sshd: linuxer@pts/1
root     17150 31937  0 17:15 ?        00:00:00 sshd: root@pts/0
root     17180 17152  0 17:16 pts/0    00:00:00 grep sshd
root     31937     1  0 Sep17 ?        00:00:00 /usr/sbin/sshd
- 이 경우 PID 31937의 sshd 데몬이 떠있고 sshd를 통해 세명이 접속

- 프로세스가 없이 OS 자체가 존재할 수 없을 정도로 중요한 부분이므로 ps 명령어 역시 많은 옵션이 존재



◆ 옵션의 큰 분류

1. '-'를 맨 앞에 붙여 그룹지어 사용하는  유닉스 옵션

2. '-'없이 그룹지어 사용하는 BSD 옵션

3. '--'를 맨 앞에 붙여 사용하는 기다란 GNU 옵션

[자유롭게 섞어 사용할 수 있지만 서로 상반되는 속성을 가진 옵션끼리 사용될 때 충돌이 일어날 수 있다.]



◆ 옵션

-e : 모든 프로세스(-A와 같다), 환경을 보여준다.

-f : full format으로 보여준다(자세히 보여준다)

-F : 더 자세히 보여준다

-y : flag를 안보여준다. -l 옵션하고만 사용할 수 있다고 한다;

-l : 자세한 형태의 정보를 출력한다.

-u : 각 프로세서의 사용자 이름과 시작 시간을 보여준다.

-j : 작업 중심 형태로 출력한다.

-s : 시그널 중심 형태로 출력한다.

-v : 가상 메모리 중심 형태로 출력한다.

-m : 메모리 정보를 출력한다.

-a : 다른 사용자들의 프로세서도 보여준다.

-x : 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다. 유닉스 시 스템은 사용자가 로그아웃하고 난 후에도 임의의 프로세서가 계속 동작하게 할 수 있다. 그러면 그 프로세서는 자신을 실행시킨 셸이 없이도 계속 자신의 일을 수행한다. 이러한 프로세서는 일반적인 ps 명령으로 확인할 수 없다. 이때 -x 옵션을 사용하면 자신의 터미널이 없는 프로세서들을 확인할 수 있다.

-S : 차일드(child) CPU 시간과 메모리 페이지 결함(fault) 정보를 추가 한다.

-c : 커널 task_structure로 부터 명령 이름을 보여준다.

-w : 긴(wide) 형태로 출력한다. 한 행 안에 출력이 잘리지 않는다.

-h : 헤더를 출력하지 않는다.

-r : 현재 실행중인 프로세서를 보여준다.

-n : USER 와 WCHAN 을 위해 수치 출력을 지원한다.





응용


표준 방법을 사용해서 시스템의 모든 프로세스를 보려면

# ps -e
# ps -ef
# ps -eF
# ps -ely


BSD 방법을 사용해서 시스템의 모든 프로세스를 보려면

# ps ax
# ps axu


프로세스를 트리형식으로 출력하려면

# ps -ejH
# ps axjf


스레드 관련한 정보를 얻으려면

# ps -eLf
# ps axms


보안 정보를 얻으려면

# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM


사용자 형식으로 모든 root(real & effective ID)로 실행중인 프로세스를 보려면:
# ps -U root -u root u
-U : real UID
-u : effective UID
u : display user-oriented format


직접 정의한 형식으로 프로세스를 출력하려면:
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan


syslogd의 PID만 출력하려면:
# ps -C syslogd -o pid=


PID가 42인 프로그램 이름만 출력하려면:
# ps -p 42 -o comm=


ID가 USERID인 사람으로 돌아가는 프로세스 보기

# ps -f -U USERID -u USERID





사용방법 및 정보


기본적으로 ps는 현재 명령이 내려지는 쉘에서 만들어진 프로세서들의 목록만을 보여준다. ps는 자신이 실행되는 당시, 현재의 쉘에 의해서 수행된 프로세서들을 검사하고 보고한다는 점을 생각하자. 그러면 ps의 출력결과 리스트에 ps 자신이 있는 이유를 쉽게 이해할 수 있을 것이다. 각 필드의 의미는 다음과 같다.
COMMAND : 명령어의 이름
PID : 프로세서 ID, 각 프로세서를 구분하기 위한 고유의 ID
RSS : 프로세서에 의해 사용되는 실제 메모리의 용량(K byte 단위)
USER : 프로세서를 실행시킨 소유자의 계정을 보여준다.
SZ : 프로세서의 자료와 스텍 크기의 (K byte 단위)
TIME : 현재까지 사용된 CPU의 시간(분,초)
TT : 프로세서의 제어 터미널(t3=/dev/tty3) %
CPU : 마지막 분동안 프로세서가 사용한 CPU시간의 백분율
START : 프로세서가 시작된 시간
STAT : 프로세서의 상태
이 중 STAT 필드는 몇 가지의 부호를 사용해서 프로세서의 상태를 표시하고 있다. 그것들을 정리해 보면 다음과 같다.
P : 수행 가능/수행 중
T : 일시 정지
D : 디스크 입출력 대기 같은 인터럽트할 수 없는 대기상태
S : 20초 미만의 짧게 잠듦(sleep)
I : 20초 이상의 길게 잠듦
Z : 좀비(zombi) 프로세서
좀비(zomb) 상태라는 것은 프로세서가 사라질 때 시그널 처리의 문제로 완전히 소멸되지 못한 상태를 말한다.

대개는 _aux 옵션을 많이 사용한다. 이 중 필요한 프로세스에 대한 결과만 선택적으로 보고자 한다면 grep 명령을 같이 사용한다.


반응형

'Linux' 카테고리의 다른 글

Linux SAR  (0) 2018.08.08
Linux top  (0) 2018.08.08
Linux mpstat  (0) 2018.08.08
Linux iostat  (0) 2018.08.08
Linux 환경변수  (0) 2018.08.08

+ Recent posts