1. 程式人生 > >如何查殺stopped程序

如何查殺stopped程序

開發十年,就只剩下這套架構體系了! >>>   

Linux系統下面,top命令可以檢視檢視stopped程序。但是不能檢視stopped程序的詳細資訊。那麼如何檢視stopped 程序,並且殺掉這些stopped程序呢?

ps -e j | grep T 

如何查殺stopped程序如何查殺stopped程序

stopped程序的STAT狀態為T,一般而言,程序有下面這些狀態碼:

D    uninterruptible sleep (usually IO)
I    Idle kernel thread
R    running or runnable (on run queue)
S    interruptible sleep (waiting for an event to complete)
T    stopped by job control signal
t    stopped by debugger during the tracing
W    paging (not valid since the 2.6.xx kernel)
X    dead (should never be seen)
Z    defunct ("zombie") process, terminated but not reaped by
     its parent

for BSD formats and when the stat keyword is used, additional
rs may be displayed:

<    high-priority (not nice to other users)
N    low-priority (nice to other users)
L    has pages locked into memory (for real-time and custom
     IO)
s    is a session leader
l    is multi-threaded (using CLONE_THREAD, like NPTL
     pthreads do)
+    is in the foreground process group

一般較常見的是5種狀態碼:

D 不可中斷 uninterruptible sleep (usually IO)
        R 執行 runnable (on run queue)
 	S 中斷 sleeping
 	T 停止 traced or stopped
 	Z 僵死 a defunct (”zombie”) process

所以,可以用下面命令ps -A -ostat,ppid,pid,cmd | grep -e ‘^[T]‘ 檢視stopped的程序資訊,進而使用kill命令將程序完全殺死。如下所示:

#  ps -A -ostat,ppid,pid,cmd | grep -e '^[T]'

T     6777  8635 more alert_pps.log
T     6777  9654 tail -60f alert_pps.log
T     6777 10724 top
# kill -9 8635
#  ps -A -ostat,ppid,pid,cmd | grep -e '^[T]'
T     6777  9654 tail -60f alert_pps.log
T     6777 10724 top
# kill -9 9654
# kill