프로세스의 현재 상태를 보여주는 명령어이다.
ps 명령어는 프로세스의 현재 상태를 보여주는 명령어이다.
ps 명령으로 현재 사용하는 프로세스의 상태를 간단히 한 번 살펴 보자.
ps 명령으로 PID, TTY, TIME, CMD 헤더의 필드와 내용을 보여 준다.
그럼, 이들 필드에 대해 한 번 알아 보자.
. ADDR : 프로세스 스택의 세그먼트 번호
. BND : 커널 스레드가 바인드되는 프로세스의 논리 프로세스 번호 (-o 옵션)
. C :
. CMD : 사용자가 실행한 명령 이름
. COMMAND : 사용자가 실행한 명령 이름
. F : 프로세스 및 쓰레드에 관련된 항목
. LIM : 메모리에 대한 소프트 한계와 관련된 항목
. NI : 프로세스의 nice값, 낮을수록 CPU 시간이 높다
. PID : 프로세스 ID
. PRI : 프로세스 스케줄링 우선순위, 낮을수록 우선순위가 높다.
. RSS : 프로세스의 실제 메모리의 크기로 킬로바이트 단위
. S : 프로세스나 커널 쓰레드의 상태
. SIZE : 가상 이미지의 크기
. STAT : 실행되고 있는 프로세스의 상태
아래는 STAT 필드의 상태를 설명한 내용이다.
-D : 디스크 입출력 대기 상태로 interrupts를 걸 수 없는 상태
-R : 실행중
-S : 짧은 sleep 상태
-T : 정지상태
-Z : 좀비상태
-W : 상주한 페이지가 없는 프로세스
-< : 높은 우선권 프로세스
-N : 낮은 우선권 프로세스
-L : 페이지가 락이 걸린 상태
. STIME : 프로세스의 시작시간
. SZ : 프로세스가 사용하는 자료와 스택의 크기
. TIME : 프로세스가 소비한 총 시간
. TRS : 텍스트의 실제 메모리 크기
. TTY : 연결되어 있는 터미널
. UID : 사용자 ID
. USER : 사용자 이름
. WCHAN : 프로세스에 거주하는 커널함수
. VSZ : 가상 메모리에 적재된 프로세스의 KB단위 크기
. %CPU : 마지막 1분 동안 프로세스가 사용한 CPU 점유율
. %MEM : 마지막 1분 동안 프로세스가 사용한 메모리의 점유율
-u 옵션으로 사용자의 ID나 이름을 지정하여 지정한 사용자의 프로세스만을 살펴 볼수 있다.
apache 관련 프로세스 중 PID 835를 강제로 종료시키자. 여기서 -9는 행당 프로세스를 강제로 종료 시킨다.
관련 PID 프로세스를 다시 시작할 수도 있다.
또는 이런 방법을 사용할 수도 있다.
보통 시스템에의 모든 프로세스를 보고자 할 경우 aux 옵션의 조합을 많이 쓴다.
많은 프로세스를 어떤 기준으로 해서 정렬을 할 경우가 많이 있다. 정렬을 위해서는 O옵션이나 --sort 옵션을 사용한다. O 옵션일 경우 O[+|-]K[,+|-]K[,...]]의 형식을 사용하며, --sort옵션일 경우 --sort=[+|-]key[,+|-]key[,...]의 형식을 사용한다.
O옵션에 -r를 붙여 RSS를 가장 큰 값을 맨 위에 보여주는 내림차순으로 정렬하였다. 만일 2개 이상의 기준으로 정렬을 한다면, 콤마 후 정렬 방식과 기준되는 k필드를 지정하면 된다.
[관련 명령어]
pstree 트리 형태로 프로세스 계층도를 보여준다.
top 실시간으로 프로세스 변화 상황을 보여준다.
사용법 : ps [옵션] 전체적인 프로세스와 관련된 옵션 -A : 모든 프로세스를 보여준다. -N : -A 옵션과 비슷하나, ps 명령을 위해 실행한 ps 프로세스만 제외하여 보여준다. (실행을 취소한다) -a : 세션 리더 및 터미널과 관련되지 않은 프로세스를 제외한 모든 프로세스를 보여준다. -d : 세션 리더를 제외한 모든 프로세스를 보여준다. -e : 커널 프로세스를 제외한 모든 프로세스를 보여준다. T : 현 터미널에서의 모든 프로세스를 보여준다. a : 한 터미널의 사용자 고유 프로세스를 보여준다. r : 현재 실행중인 프로세스를 보여준다. x : 터미널 없는 프로세스를 보여준다. --deselect : -N 옵션과 같다. 특정 프로세스를 지정(선택)하여 지정한 목록만 보여주는 옵션 -C : 지정한 명령어 이름에 관련된 정보를 보여준다. -G : 지정한 RGID에 관련된 정보를 보여준다. (이름도 지원) -U : 지정한 RUD에 관련된 정보를 보여준다. (이름도 지원) -g : 지정한 세션 리더 혹은 그룹 이름에 관련된 정보를 보여준다. -p : PID를 선택한다. -s : 세션에 속한 프로세스를 선택한다. -t : tty를 선택한다. -u : 사용자 ID를 지정한다 (이름도 지원) U : 지정한 사용자의 프로세스를 보여준다. p : 프로세스 ID를 선택한다. t : tty를 선택한다. --Group : 실제 그룹이름이나 ID를 선택한다. --User : 실제 사용자이름이나 ID를 선택한다. --group : 유효 그룹이름이나 ID를 선택한다. --pid : 프로세스 ID를 선택한다. --sid : 세션 ID를 선택한다. --tty : 터미널을 선택한다. --user : 유효 사용자이름이나 ID를 선택한다. -123 : --sid의 의미이다. 123 : --pid의 의미이다. 결과로써 보여지는 필드를 선택(제어)하는 옵션 -0 : PID, TTY, STAT, TIME, COMMAND 등의 필드 목록을 보여준다. -c : PID, CLS, PRI, TTY ,TIME, CMD 등의 필드 목록을 보여준다. -f : UID, PID, PPID, C, STIME, TTY, TIME, CMD 등의 필드목록으로, CMD필드의 전체 명령어 형태를 보여준다. -j : PID, PGID, SID, TTY, TIME, CMD등의 필드 목록을 보여준다. -l : F, S, UID, PID, PPID, C, PRI, NI, ADDR, SZ, WCHAN, TTY, TIME, CMD등의 필드 목록으로, 상세한 정보를 보여준다. -o : 사용자 지정 형식 -y : -l 이나 l 옵션과 함께 쓰여, ADDR 필드를 RSS필드로 보여준다. 0 : PID, TTY, STAT, IME COMMAND 등의 필드 목록을 보여준다. X : PID, STACKP, ESP, EIP TMOUT, ALARM, STAT, TTY, TIME, COMMAND등의 필드 목록으로 구 리눅스 I386 레지스터 형식을 보여준다. j : PPID, PID, PGID, SID, TTY, TPGID, STAT, UID, TIME, COMMAND 등의 필드 목록으로 작업 제어에 관련되 형식을 보여준다. l : F, S, UID, PID, PPID, C, PRI, NI, ADDR, SZ, PSS, WCHAN, TTY, TIME, CMD등의 필드 목록으로, -l 옵션에 PSS 필드를 추가하여 보여준다. o : 사용자 지정 형식 s : UID, PID, PENDING, BLOCKED, IGNORED, CAUGHT, STAT, TTY, TIME, COMMAND등의 필드 목록을 보여준다. u : USER, RID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND등의 필드 목록을 보여준다. v : PID, TTY, STAT, TIME, MAJFL, TRS, DRS, RSS, %MEM, COMMAND 등의 필드 목록을 보여준다. --format : 사용자 지정 형식 결과로써 보여지는 필드의 내용을 변경하는 옵션 -H : 프로세스를 계층으로 보여준다. -m : 쓰레드를 보여준다. -n : 지정한 시스템 이름 리스트 파일을 사용한다. -w : 필드의 너비에 맞추어 짤린 내용을 내용에 맞추어 보다 자세하게 보여준다. C : raw CPU 시간을 이용한다. N : 지정한 시스템 이름 리스트 파일을 이용한다. O : 정렬 순서 지정하기 위한 옵션으로 O[+|-]K[,+|-]K[,...]]의 형식으로 정력 방식을 지정한다. 여기에서 올 수 있는 k는 사용법에서 설명한다. +는 오름차순 정렬이며, -는 내림차순 정렬이다. S : 죽은 자식 프로세스 데이터를 포함한다. c : 시스템 내부에 보관된 간단한 명령 이름을 보여준다. e : 명령에 대한 매개 변수와 함께 환경변수도 보여준다. f : 아스키 아트로 프로세스 트리를 보여준다. h : 헤더 라인을 보여주지 않는다. m : 모든 쓰레드를 보여준다. n : WCHAN 과 USER 필드를 숫자 값으로 보여준다. w : 필드의 너비에 맞추어 짤린 내용을 내용에 맞추어 보다 자세하게 보여준다. --cols : 스크린의 너비를 설정한다. --columns : 스크린의 너비를 설정한다. --cumulative : 죽은 자식 프로세스 데이터를 포함한다. --forest : 아스키 아트의 프로세스 트리를 보여준다. --html : HTML 이스케이프로 보여준다. --headers : 헤더 라인을 반복한다. --no-headers : 헤더를 보이지 않는다. --lines : 스크린의 높이를 설정한다. --rows : 스크린의 높이를 설정한다. --sort : 지정한 정렬 방식으로 보여준다. --sor=[+|-]key[,+|-]key[,...] 형식이다. 여기서 사용할 수 있는 key는 사용법에서 설명한다. 예를 들어 ps jax --sort=uid,-ppid,+pid 형식으로 할 수 있다. 프로그램 정보 -V : 버전 정보를 보여준다. L : 모든 포맷 지시자를 보여준다. V : 버전 정보를 보여준다. --help : 도움말을 보여준다. --info : 디버깅 정보를 보여준다. --version : 버전 정보를 보여준다.
ps 명령어는 프로세스의 현재 상태를 보여주는 명령어이다.
ps 명령으로 현재 사용하는 프로세스의 상태를 간단히 한 번 살펴 보자.
# ps PID TTY TIME CMD 3177 pts/4 00:00:00 bash 3599 pts/4 00:00:00 ps
ps 명령으로 PID, TTY, TIME, CMD 헤더의 필드와 내용을 보여 준다.
그럼, 이들 필드에 대해 한 번 알아 보자.
. ADDR : 프로세스 스택의 세그먼트 번호
. BND : 커널 스레드가 바인드되는 프로세스의 논리 프로세스 번호 (-o 옵션)
. C :
. CMD : 사용자가 실행한 명령 이름
. COMMAND : 사용자가 실행한 명령 이름
. F : 프로세스 및 쓰레드에 관련된 항목
. LIM : 메모리에 대한 소프트 한계와 관련된 항목
. NI : 프로세스의 nice값, 낮을수록 CPU 시간이 높다
. PID : 프로세스 ID
. PRI : 프로세스 스케줄링 우선순위, 낮을수록 우선순위가 높다.
. RSS : 프로세스의 실제 메모리의 크기로 킬로바이트 단위
. S : 프로세스나 커널 쓰레드의 상태
. SIZE : 가상 이미지의 크기
. STAT : 실행되고 있는 프로세스의 상태
아래는 STAT 필드의 상태를 설명한 내용이다.
-D : 디스크 입출력 대기 상태로 interrupts를 걸 수 없는 상태
-R : 실행중
-S : 짧은 sleep 상태
-T : 정지상태
-Z : 좀비상태
-W : 상주한 페이지가 없는 프로세스
-< : 높은 우선권 프로세스
-N : 낮은 우선권 프로세스
-L : 페이지가 락이 걸린 상태
. STIME : 프로세스의 시작시간
. SZ : 프로세스가 사용하는 자료와 스택의 크기
. TIME : 프로세스가 소비한 총 시간
. TRS : 텍스트의 실제 메모리 크기
. TTY : 연결되어 있는 터미널
. UID : 사용자 ID
. USER : 사용자 이름
. WCHAN : 프로세스에 거주하는 커널함수
. VSZ : 가상 메모리에 적재된 프로세스의 KB단위 크기
. %CPU : 마지막 1분 동안 프로세스가 사용한 CPU 점유율
. %MEM : 마지막 1분 동안 프로세스가 사용한 메모리의 점유율
-u 옵션으로 사용자의 ID나 이름을 지정하여 지정한 사용자의 프로세스만을 살펴 볼수 있다.
# ps -u apache -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 140 S 48 10392 10605 0 69 0 - 20732 semtim ? 00:00:10 httpd 140 S 48 10597 10605 0 69 0 - 20242 semtim ? 00:00:11 httpd 140 S 48 10599 10605 0 69 0 - 20585 semtim ? 00:00:10 httpd 140 S 48 10600 10605 0 69 0 - 20579 semtim ? 00:00:09 httpd 140 S 48 10601 10605 0 69 0 - 20595 semtim ? 00:00:10 httpd 140 S 48 10602 10605 0 71 0 - 20606 semtim ? 00:00:06 httpd 140 S 48 10603 10605 0 69 0 - 20550 do_sel ? 00:00:09 httpd 140 S 48 10604 10605 0 69 0 - 20582 semtim ? 00:00:11 httpd 140 S 48 10606 10605 0 69 0 - 20736 semtim ? 00:00:10 httpd 140 S 48 10607 10605 0 69 0 - 20266 semtim ? 00:00:07 httpd 140 S 48 10608 10605 0 69 0 - 20556 semtim ? 00:00:11 httpd 140 S 48 10609 10605 0 69 0 - 20221 semtim ? 00:00:11 httpd 140 S 48 10835 10605 0 69 0 - 20604 semtim ? 00:00:07 httpd 140 S 48 11252 10605 0 69 0 - 20259 semtim ? 00:00:01 httpd 140 S 48 11334 10605 0 69 0 - 20559 semtim ? 00:00:02 httpd 140 S 48 11335 10605 0 69 0 - 20592 semtim ? 00:00:03 httpd 140 S 48 11336 10605 0 74 0 - 20215 semtim ? 00:00:03 httpd 140 S 48 11420 10605 0 69 0 - 20374 semtim ? 00:00:03 httpd
apache 관련 프로세스 중 PID 835를 강제로 종료시키자. 여기서 -9는 행당 프로세스를 강제로 종료 시킨다.
# kill -9 835
관련 PID 프로세스를 다시 시작할 수도 있다.
# kill -HUP 835
또는 이런 방법을 사용할 수도 있다.
# kill -SIGHUP 835
보통 시스템에의 모든 프로세스를 보고자 할 경우 aux 옵션의 조합을 많이 쓴다.
많은 프로세스를 어떤 기준으로 해서 정렬을 할 경우가 많이 있다. 정렬을 위해서는 O옵션이나 --sort 옵션을 사용한다. O 옵션일 경우 O[+|-]K[,+|-]K[,...]]의 형식을 사용하며, --sort옵션일 경우 --sort=[+|-]key[,+|-]key[,...]의 형식을 사용한다.
O옵션에 -r를 붙여 RSS를 가장 큰 값을 맨 위에 보여주는 내림차순으로 정렬하였다. 만일 2개 이상의 기준으로 정렬을 한다면, 콤마 후 정렬 방식과 기준되는 k필드를 지정하면 된다.
[관련 명령어]
pstree 트리 형태로 프로세스 계층도를 보여준다.
top 실시간으로 프로세스 변화 상황을 보여준다.