사이트 내 전체검색
[linux] ps 수행중인 프로세스 표시
로빈아빠
https://cmd.kr/server/380 URL이 복사되었습니다.

본문

ps 수행중인 프로세스 표시 

수행중인 프로세스(프로세스 자체에 수행중이라는 의미가 있지만) 정보를 표시한다. ps(Process Status) 유틸리티 옵션에는 - 문자를 덧붙이지 않아도 좋다.

a 모든 프로세스 목록에 대한 정보를 표시한다.
f 트리 형태로 프로세스 정보를 표시한다. (Forest)
l 긴 포맷으로 표시한다.
u 이용자 이름과 시작 시각을 포함한다.
x 터미널과 관련 없는 프로세스도 포함한다.

-sort[+ | -]key... 지정한 키에 따라 정렬한다.

정렬키
c cmd
C cmdline
f flags
g pgrp (group ID)
p pid
P ppid (Parent's process ID)
s size
T start_time
U uid
u user (user name)

필드
USER 프로세스의 소유자 이름
PID 프로세스를 구분하는 고유 식별 번호
%CPU 프로세스의 CPU 점유율
%MEM 프로세스의 메모리 점유율
RSS 프로세스가 이용하는 메모리 크기
TTY 프로세스가 수행된 터미널 번호
STAT 수행중인 프로세스 상태
S 잠들어 있다.
R 수행 중
Z 좀비 프로세스
TIME 프로세스가 이용한 시간
COMMAND 수행중인 명령에 대한 정보

쓰는 법
가장 일반적인 형태 ps ax
상세하게 보고 싶을 때 ps al


[mintstate@chem-server mintstate]$ ps --help ********* simple selection ********* ********* selection by list ********* -A all processes -C by command name -N negate selection -G by real group ID (supports names) -a all w/ tty except session leaders -U by real user ID (supports names) -d all except session leaders -g by session leader OR by group name -e all processes -p by process ID T all processes on this terminal -s processes in the sessions given a all w/ tty, including other users -t by tty g all, even group leaders! -u by effective user ID (supports names) r only running processes U processes for specified users x processes w/o controlling ttys t by tty *********** output format ********** *********** long options *********** -o,o user-defined -f full --Group --User --pid --cols -j,j job control s signal --group --user --sid --rows -O,O preloaded -o v virtual memory --cumulative --format --deselect -l,l long u user-oriented --sort --tty --forest --version X registers --heading --no-heading ********* misc options ********* -V,V show version L list format codes f ASCII art forest -m,m show threads S children in sum -y change -l format -n,N set namelist file c true command name n numeric WCHAN,UID -w,w wide output e show environment -H process heirarchy


**
프로세스 컨트롤


1.ps명령어
:: 시스템에서 시작되는 프로세서는 각각 고유한 식별번호 프로세서ID(PID)를 가진다
ps명령은 시스템에서 현재 실행중인(sleep상태도 포함)프로세스에 대한 정보를 각 PID와 각 프로세스의 부모 ID(PPID)를 표시해 준다.
   
[syntax]     
ps [-option]     
:: 옵션에는 아래와 같은 것들이 있다.
 -e ==> 시스템에서 수행중인 모든 프로세서 정보를 보여준다.
 -f  ==> 위의 옵션과 같이 주어지며 세부정보를 보여준다. 이 옵션을 통해서  PPID(부모 프로세서)를 알수있다.

[예제]     
$ ps PID TTY TIME COMMAND 6931 pts/te 0:00 ps 6781 pts/te 0:00 telnetd 6784 pts/te 0:00 sh :: 자신이 실행한 프로세서를 보여준다. $ ps -ef UID PID PPID C STIME TTY TIME COMMAND root 0 0 0 Mar 11 ? 0:03 swapper root 1 0 0 Mar 11 ? 0:00 init root 2 0 0 Mar 11 ? 0:03 vhand root 3 0 0 Mar 11 ? 6:48 statdaemon ...이하생략 $ ps -ef| grep user6 user6 6937 6784 0 15:01:30 pts/te 0:00 grep user6 user6 6769 6768 0 14:12:12 pts/tc 0:00 -sh user6 6784 6781 0 14:12:18 pts/te 0:00 -sh user6 6936 6784 3 15:01:30 pts/te 0:00 ps -ef ::자신이 실행한 프로세서 목록을 보았다.
       
[Tip]
:: ps명령은 CPU를 주로 사용하는 명령이므로 응답시간이 느려질수도 있다.
 
 
2. 실제적인 프로세서 제어
:: 위에서 프로세서에 대해 간략하게 알아보았다. 여기서는 실제 작동중인 프로세서를 제어해 보도록하자.
   
- 백그라운드 작업 -
[syntax]
명령어 &
:: 명령어 다음에 엠퍼센드(&)를 붙이면 해당 작업은 백그라운드로 수행된다. 백그라운드 작업이란 현재 쉘을 사용할수 있게 만들어 주는 멀티플랙작업이 가능하게 해주는 유닉스의 융통성이 뛰어난 작업이다.

[예제]     
$ sleep 200 & [1] 6938 $
:: 위에서 앞의 [1]은 자신이 수행한 백그라운드 프로세서의 순차적인 번호(ob Number라고도 한다.)이고,  뒤의 194는 해당 백그라운드 작업의 PID(프로세서ID)값인 것이다.
     
$ ps PID TTY TIME COMMAND 6939 pts/te 0:00 ps 6781 pts/te 0:00 telnetd 6784 pts/te 0:00 sh 6938 pts/te 0:00 sleep <==위에서 실행한 프로세서가 보일것이다. $
             
[Tip]
:: 백그라운드 작업중인 프로세서는 일반적인 "Ctrl + c"명령으로 제어할수가 없다. ps를 통한 프로세서ID를 kill하거나 로그아웃하면 중지된다. 로그아웃을 할경우 해당 작업이 완료되지 않으면  $ There are running jobs. 이라는 메시지를 보여준다.

- 프로세서의 그라운드 이동 -
:: 제목이 조금 이상하군여(^^).현재 백그라운드나 포그라운드에 진행중인 프로세서를 각각 포그라운드나 백그라운드로 이동시킨다.

[syntax]
fg [%PID]
fg [%명령어]
bg [%PID]
bg [%명령어]
   
:: PID 와 실행한 명령어로도 가능하다.

[예제]
$ sleep 200 <== 포그라운드로 명령을 실행 "ctrl + z"를 입력하면 해당 프로세스가 잠시 중지된다. [1] + Stopped sleep 200 $ bg %1 <== 백그라운드로 전환한다. [1] sleep 200& $ jobs <== 백그라운드로 진행되고 있는지 확인한다. [1] + Running sleep 200 $ fg %1 <== 백그라운드 작업을 포그라운드로 전환한다. sleep 200
       
[Tip]
:: 포그라운드 작업을 중지시키는 명령인 "ctrl + z"는 .profile 에서 "stty susp ^z "라는 엔트리를 사용하여 로그인시 지정된다.

- nohup 명령어 -
:: 명령의 정지나 로그아웃에 영향을 받지 않는 명령으로 유닉스 시스템의 접두부(다른명령의 앞에 오는 명령)명령의 하나이다. 따라서 해당 명령을 지속적으로 실행하고자 할때 사용된다.

[syntax]   
nohup 명령어 &   

[예제]
$ nohup sleep 400 & <== 명령실행 [1] 7026 $ Sending output to nohup.out <== nohup의 표준출력파일이 생성된다. 이제 로그아웃해본다. ctrl + d $ There are running jobs. <== 작업이 있다고 알려준다.그래도 로그아웃한다. ctrl + d 다시 로그인 한다. $ ps -ef| grep user6 user6 7026 1 0 15:52:03 ? 0:00 sleep 400 <== 실행중이군여.. user6 7049 7029 14 15:53:00 pts/tg 0:00 ps -ef user6 6769 6768 0 14:12:12 pts/tc 0:00 -sh user6 7050 7029 3 15:53:00 pts/tg 0:00 grep user6 user6 7029 7028 0 15:52:38 pts/tg 0:00 -sh $
   
[Tip]
:: nohup 명령의 출력방향을 지정하지 않으면 Default로 nohup.out이라는 파일이 생성된다. 이파일에는 표준출력과 표준에러가 모두 기록된다.

- nice 명령어 -
:: 유닉스의 멀티플랙스한 점은 CPU를 시분할 시스템으로 분할하여 CPU에게 작업을 할당한다. nice는 작업의 우선순위를 결정한다.

[syntax]     
nice [-N] 명령어
   
:: N은 1에서 15사이의 낮은 우선순위로 실행된다. 이것은 백그라운드에서의 작업할당번호이다.

[예제]     
$ nice -10 sleep 200 & [1] 7151 $ ps -l <== 프로세서 우선순위를 볼수있다. S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME COMD 1 S 306 7151 7029 12 168 34 14d5600 9 14d7620 pts/tg 0:00 sleep 1 R 306 7152 7029 10 180 20 1354b00 30 - pts/tg 0:00 ps 1 S 0 7028 958 0 154 20 1768900 32 14f3038 pts/tg 0:00 telnetd 1 S 306 7029 7028 2 158 20 1597000 63 c11cc0 pts/tg 0:00 sh $

nice값은 NI항목에 표시된다. 위에서 보듯이 nice값이 34이다.
이것은 기본nice값이 20이고 그리고 nice 실행시 더한값이 10이고 그리고 백그라운드시
4가 더해지기 때문이다.   
   
[Tip]
:: nice의 초기시작 값은 20이다. 백그라운드로 실행할 경우 포그라운드보다 +4 가된다. 따라서 포그라운드일 경우에는 작업할당번호가 1~19까지이다.

- kill(프로세서 죽이기) -
:: TERM신호를 지정된 프로세스에 보낸다. 해당 프로세스를 종료하도록 요구한다.

[syntax]
kill [-s 시그널이름] PID
   
:: kill PID하여도 된다.
   
[예제]   
$ sleep 400 & [1] 7182 $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME COMD 1 R 306 7185 7029 10 180 20 16af200 30 - pts/tg 0:00 ps 1 S 306 7182 7029 0 168 24 1597100 9 1b34ae0 pts/tg 0:00 sleep 1 S 0 7028 958 0 154 20 1768900 32 14f3038 pts/tg 0:00 telnetd 1 S 306 7029 7028 0 158 20 1597000 64 c11cc0 pts/tg 0:00 sh $ kill 7182 [1] + Terminated sleep 400 & $ kill -s <==선택항목을 볼수있다. $ kill -l <==이것도 해보기 바란다.signal_name의 모든값을 기록한다.

[Tip]
:: 좀비프로세스란 해당 프로세서가 defunct난 경우로 kill명령어로 죽지 않는  경우가 있다. 확인은 ps -ef 로 CMD 가 난 경우이다.
프로세스 테이블은 프로세스 가동갯수가 있는데 좀비프로세스는 프로세서 테이블을 차지함으로서 자원을 소모한다.
이때는 시스템을 재가동 하는 경우가 대부분이다.

댓글목록

등록된 댓글이 없습니다.

1,139 (11/23P)

Search

Copyright © Cmd 명령어 3.146.152.147