Linux ps (프로세스 확인하기)[IT 지식창고 - 창공]
[리눅스, 유닉스] 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'는 System V 계열 옵션으로 시스템에 동작중인 모든 프로세스를 full format으로 자세하게 출력한다.
ps -ef
는 ps
명령어에 두가지 옵션 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 -ef'로 충분한데 프로세스 상태나 우선순위를 확인하고 싶을 경우 -l 옵션으로 확인해준다.
긴 포맷으로 출력하고 싶을 경우 -l 옵션을 사용
'ps -ef'에서 보이지 않았던, F, S, PRI, NI, ADDR~ 등등 더 많은 정보들이 출력된다.
시스템에 동작중인 모든 프로세스를 보고 싶을 때 위와 같은 명령어를 사용하면 BSD 포맷으로 출력한다.
UNIX에서는 주로 ps -e
와 비슷
PID, TTY, STAT, TIME, COMMAND 정보가 출력되는데, 사용자 기준의 다양한 정보들을 출력해주고 싶으면 u옵션을 껴서 aux로 명령어를 구성해주면 된다.
BSD 계열에선 'ps aux'를 ps -ef
처럼 가장 많이 사용한다.
ps aux | grep '프로세스명'
-p 옵션을 통해 PID를 키워드로 프로세스 정보를 확인하는 방법이다.
특정 사용자가 돌리는 프로세스의 정보를 알고 싶을 때 real uid와 uid를 의미하는 옵션으로 선택할 수 있다.
위 예시는 gillog가 돌리는 프로세스를 확인하는 명령어
-t 옵션으로 특정 TTY에서 실행되는 프로세스를 선택해 확인할 수 있다.
-o 옵션을 사용하면 원하는 항목만 보이도록 포맷 설정을 할 수 있다.
PID가 1222인 프로세스의 이름을 출력.
이름이 httpd인 프로세스들의 pid를 출력.