리눅스마스터1급: 실행중인 프로세스 상황보는 ps
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 6,082 조회
- 0 추천
- 목록
본문
리눅스마스터1급: 실행중인 프로세스 상황보는 ps
ps
ps는 현재 실행중인 프로세스에 대한 상세한 정보를 보는 명령어이다.
리눅스는 다중 사용자(Multi-user), 다중 작업(multi-tasking) 시스템이기 때문에 여러 개의 작업(job), 즉 프로세스가 동시에 실행된다.
그리고 사용자는 프로세스 아이디(PID)를 사용하여 작업을 중지하거나, 우선순위를 변경하는 등의 작업을 할 수 있다.
이때 현재 실행중인 프로세스의 정보를 얻기 위해 ps 명령어를 사용한다.
그리고 ps 명령어로 어떤 프로세스가 CPU를 지나치게 많이 사용했거나, 지나치게 많은 자식 프로세스를 가지고 있거나, 특정 응용 프로그램이 현저하게 속도가 느려지는 경우 이 명령어로 분석하여 시스템의 비정상 작동을 감지하여 오류를 수정할 수 있다.
1) 개요
| 
 | 
 | 
 | 
| 
 | ps [options] | 
 | 
| 
 | 
 | 
 | 
2) 옵션
다음은 ps 명령어에 사용되는 주요한 옵션들에 대한 설명이다.
| 옵션 | 의미 | 
| -a | 세션 리더와 터미널과 연관이 없는 프로세스를 제외한 모든 프로세스를 출력한다. 
 
 
 
 | 
| a | BSD 스타일로서 터미널과 연관된 모든 프로세스를 출력하거나, x 옵션과 함께 사용되어 모든 프로세스를 출력한다. 
 
 
 
 | 
| -d | 세션 리더를 제외한 모든 프로세스들을 출력한다. 
 
 
 
 | 
| -e | 모든 프로세스를 출력한다. 
 
 
 -A와 동일한 옵션이다. 
 
 
 
 | 
| r | 실행 프로세스만 출력한다. 
 
 
 
 | 
| x | BSD 스타일로서 혼자 사용되면 사용자에 의해 소유된 모든 프로세스를 출력하고 a 옵션과 함께 사용되어 모든 프로세스를 출력한다. 
 
 
 
 | 
| -F | 아주 완전한 형식(extra full format)을 출력한다. 
 
 
 
 | 
| -f | 완전한 형식의 목록을 출력한다. 
 
 
 
 | 
| -h | 메뉴는 보여주지 않는다(PID, TTY, STAT, TIME, COMMAND 등). | 
| -j | 작업에 관련된 ID를 출력한다. 
 
 
 
 | 
| l | BSD 형식으로 상세한 정보를 출력한다. 
 
 
 
 | 
| -l | -c 옵션에 비해 상세한 정보를 출력한다. 
 
 
 자주 -y 옵션과 함께 사용된다. 
 
 
 
 | 
| u | 사용자 친화적인 형식으로 출력한다. 
 
 
 
 | 
| -y | 플래그(flags)를 보여주지 않는다. 
 
 
 addr 대신 rss를 보여준다. 
 
 
 이 옵션은 –l 옵션과 함께만 사용될 수 있다. 
 
 
 
 | 
| e | 명령에 따르는 환경들을 함께 출력한다(-e 옵션과 다르다) | 
| f | 프로세스 간 상속관계를 트리구조로 보여준다. 
 
 
 
 | 
| n | 사용자의 정보를 (모든 형식의 UID와 GID를 포함하여) 숫자로 표시한다. 
 
 
 
 | 
| -w | 출력결과를 생략하지 않고 넓게 출력한다(w 옵션도 동일하다). | 
3) 설명
옵션 없이 ps 명령어를 실행하면 현재 터미널과 관련된 프로세스들에 대한 정보를 출력하는데, 여기에는 프로세스 ID, 터미널 번호, 실행 시간, 명령어 이름을 볼 수 있다.
ps에 특정 옵션을 더해서 명령을 내렸을 때 출력되는 화면의 윗부분에 나타나는 메뉴들의 뜻은 다음과 같다.
| 옵 션 | 의미 | 
| PID(process ID) | 프로세스마다 주어지는 번호 | 
| TTY(TeleTypewriter) | 명령어가 실행되는 터미널의 번호. 할당된 것이 없는 경우 ? 출력. | 
| STAT(SteTe) | 실행되고 있는 프로세스 상태(R,S,D,T,Z,W,N) | 
| START(START) | 프로세스가 시작된 시간 | 
| TIME(TIME) | CPU를 사용한 시간 | 
| USER(USER) | 사용자의 이름 | 
| COMMAND(COMMAND) | 사용자가 실행한 명령어 | 
| UID(User ID) | 사용자의 ID | 
| PGID(Parent Group ID) | 사용자 부모 프로세스의 그룹 ID | 
| SID(Session ID) | 세션 ID | 
| PRI(PRIority) | 실행하는 우선 순위에 따른 프로세스 | 
| NI(NIce) | nice에 의한 우선 순위에 따른 프로세스 | 
| RSS(Resident Set Size) | 프로세스가 사용하는 메모리의 크기 | 
| SZ(SiZe) | 프로세스가 사용하는 자료와 스택의 크기 | 
| SHRD(SHareD) | 프로세스가 사용하는 공유메모리 | 
| %CPU | 프로세스가 사용하는 CPU 점유율 | 
| %MEM | 프로세스가 사용하고 있는 메모리 점유율 | 
| WCHAN | 프로세스가 실행하고 있는 커널 루틴 | 
| VSZ | KiB 단위(1024 바이트 단위)의 프로세스의 버추얼 메모리 크기(vsize와 동이한 의미). | 
ps 명령 뒤에 -l 옵션만 붙여서 실행해 보자. 그러면 현재의 터미널에서 실행된 프로그램의 프로세스들에 대한 상세한 정보가 나올 것이다.
이 정보에서 처음에 나오는 F는 다음 8진수 값의 합을 나타낸다.
| 플래그 | 의미 | 
| 01 | 주기억 장치 내에 있음 | 
| 02 | 시스템 프로세스 | 
| 04 | 주기억 장치 내에서 잠겼음(Locked) | 
| 10 | 스왑(Swap)되고 있음 | 
| 20 | 다른 프로세스에 의해 추적되고 있음 | 
그 다음의 “S”는 프로세스 상태를 표시하며, 다음의 값 중에서 하나를 가진다.
| 플래그 | 의미 | 
| R | 실행되고 있거나 실행될 수 있음(Running). | 
| S | 인터럽트 될 수 있는 Sleep. 하나의 이벤트가 완결되기를 기다림(Sleeping). | 
| W | 2.6.x 커널부터 사용되지 않음. | 
| T | 멈춤(Terminated). | 
| Z | 작동하지 않는 프로세스(Defunct (zombie) process). | 
| X | 죽음. 실제로는 보여지지 않음(dead). | 
| D | 인터럽트 될 수 없는 Sleep. | 
일반적으로 ps 명령을 사용할 때에는 ax, axu 및 -e 옵션을 많이 사용한다.
ax와 aux는 BSD 형식으로 시스템상의 모든 프로세스를 출력한다.
그리고 -e 옵션은 표준 형식으로 시스템상의 모든 프로세스를 출력한다(-A, -ef, -eF, -ely 도 같은 의미이다). 다음과 같다.
| 
 | 
 | 
 | 
| 
 | # ps –e # ps ax # ps axu | 
 | 
| 
 | 
 | 
 | 
그런데 이렇게 하면 출력 내용이 너무 많기 때문에 파이트(|)와 grep 명령을 사용하여 특정 프로세스만 보거나 파이프(|)와 more 명령을 사용하여 페이지 단위로 끊어서 내용을 확인하기도 한다.
| 
 | 
 | 
 | 
| 
 | # ps ax | grep mysqld # ps ax | more | 
 | 
| 
 | 
 | 
 | 
관련자료
- 
			이전
- 
			다음
 
								
