Unix Linux

[펌] 프로세스 상태 추적 관련 명령어

_침묵_ 2005. 11. 9. 09:19

*** 프로세스 상태 추적 관리 ***

 

프로세스의 상태를 체크하기 위해 ps 명령어나 proctool, top 등을 써 보았을 것입니다.
그런데 많은 분들이 유용하게 사용할 수 있는 명령어들을 몰라서 소개해 놓았습니다.
프로세스를 관리하는 명령어들이 /usr/proc/bin에 있으므로 PATH를 추가하면 이후 내용을
해보기가 쉽겠죠.

본,콘쉘 상태에서

#PATH=/usr/proc/bin:$PATH;export PATH

 

1.  ptree  :프로세스 트리구조를 보여준다
# ps -ef |grep netscape 해서 나온 결과가 
 dol    669     655 82   18:58:20  ?         65:55  /opt/netscape/netscapehttp://www.sunworld.com/

프로세스 아이디가 669번 이므로
#ptree 669
269   /usr/dt/bin/dtlogin -daemon
 541   /usr/dt/bin/dtlogin -daemon
   561   /bin/ksh /usr/dt/bin/Xsession
     613   /usr/dt/bin/sdt_shell   -c       unset   DT;      DISPLAY=:0;       /usr/dt/bin/dt
       616     -ksh  -c         unset  DT;        DISPLAY=:0;          /usr/dt/bin/dtsession_res -merg
         655   /usr/dt/bin/dtsession
           669   /opt/netscape/netscapehttp://www.sunworld.com/
             676   (dns helper)

위의 결과를 보면 269번 dtlogin이 dtlogin을 생성한뒤 dtlogin이 561번을
생성 561번이 613을 등등등.... 669번의 netscape 가 676번을 호출한 것을 알 수 있다.

 

 

2.  pstop  :  프로세스를 정지한다
#pstop 669
netscape 을 잠시 정지한다

 

 

3.  prun :  프로세스를 다시 시작한다
#prun 669
netscape 을 다시 시작한다

 

 

4   pcred  :  프로세스의 보안정보 표시
#pcred 669
669:    e/r/suid=101  e/r/sgid=14
effective,real saved(u/g)id를 표시한다.


 

5.  프로세스의 메모리 맵상의  정보 표시
#pmap 669
669:    /opt/netscape/netscapehttp://www.sunworld.com/
00010000  13124K read/exec         /opt/netscape/netscape
00CF0000    988K read/write/exec   /opt/netscape/netscape
00DE7000  15816K read/write/exec     [ heap ]
EEE60000      8K -                   [ anon ]
메모리 주소번지와 메모리 세그먼트의 사이즈를 표시한다.

 

 

6.  pflags  :  프로세스와 플래그 정보, 시그널 핸들링 상태 등을 표시
#pflags 669
669:    /opt/netscape/netscapehttp://www.sunworld.com/
       data model = _ILP32  flags = PR_ORPHAN
 /1:   flags = PR_PCINVAL|PR_ASLEEP [ poll(0xef201a00,0x5,0xa603) ]
 sigmask = 0x00002000,0x00000000  lwppend = 0x00002000,0x00000000
플래그와 시그널 핸들링 상태 등을 표시한다 .

 

 

7.   pldd  :  다이나믹 라이브러리에 링크된 정보 표시
#pldd 669
669:    /opt/netscape/netscapehttp://www.sunworld.com/
/usr/dt/lib/libXm.so.3
/usr/openwin/lib/libXt.so.4
/usr/openwin/lib/libXmu.so.4
/usr/openwin/lib/libXext.so.0
/usr/openwin/lib/libX11.so.4
...
링크된 다이나믹 라이브러리들 표시해준다.

 

 

8.  ptime  :  수행 시간 표시
#ptime ls
dtdbcache_:0    ps_data         sdtvolcheck677  speckeysd.lock
real        0.166
user        0.029
sys         0.057
실제 수행시간, 유저프로세스시간, 시스템 프로세스 시간을 보여 준다 .

 

 

9.  pfiles  :  open한 파일 표시
#pfiles 669
669:    /opt/netscape/netscapehttp://www.sunworld.com/
 Current rlimit: 64 file descriptors
  0: S_IFCHR mode:0620 dev:32,24 ino:76843 uid:101 gid:7 rdev:24,2
     O_RDWR|O_LARGEFILE
  1: S_IFCHR mode:0666 dev:32,24 ino:76599 uid:0 gid:3 rdev:13,2
해당 프로세스와 연관된 파일들과 열수 있는 파일갯수를 확인 할 수 있다.

 

 

10.  pwdx 프로세스의 현재 디렉토리 표시
#ps -e |grep cmdtool
#pwdx 669
669:    /w/dol

 

 

11.  pwait  :  프로세스가 끝날 때까지 기다림
#ps -e | grep cmdtool
  273 console 0:01 cmdtool
  281 console 0:01 cmdtool
중간에 281을 kill 한다
# pwait -v 281
281: terminated, wait status 0x0000

 

 

12.  psig  :  프로세스의 시그널 처리 성향 표시
#psig 669
669:    /opt/netscape/netscapehttp://www.sunworld.com/
HUP               caught           0                
HUP,INT,QUIT,ILL,TRAP,ABRT,EMT,FPE,BUS,SEGV,SYS,PIPE,ALRM,TERM,USR1,USR
2,CLD,PWR,WINCH,URG,POLL,TSTP,CONT,TTIN,TTOU,VTALRM,PROF,XCPU,XFSZ,W
AITING,LWP,FREEZE,THAW,CANCEL,LOST,RTMIN ....
시그널 처리 성향을 보여준다.

 

 

13.  pstack  :  스택의 점유상태 표시
#pstack 669
669:    /opt/netscape/netscapehttp://www.sunworld.com/
ef31437c poll     (ef201a00, 5, 29bb)
ef2ce3dc select   (ef201a28, ef201c70, ef334ffc, ef201c74, ef335000, 1d) + 298
Hex값과 심볼릭 값으로 스택에 있는 상태 표시, 만일 문제가 생긴 프로세스이면 어디에서 프로세스가 정지 했는지 확인 할 수 있다.