進程查看與停止


Linux下顯示系統進程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什么區別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統中的兩種風格,System V風格和BSD 風格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,兩者輸出略有不同。現在的大部分Linux系統都是可以同時使用這兩種方式的。

ps -ef 是用標准的格式顯示進程的、其格式如下

其中各列的內容意思如下
UID    //用戶ID、但輸出的是用戶名 
PID    //進程的ID 
PPID    //父進程ID 
C      //進程占用CPU的百分比 
STIME  //進程啟動到現在的時間 
TTY    //該進程在那個終端上運行,若與終端無關,則顯示? 若為pts/0等,則表示由網絡連接主機進程。 
CMD    //命令的名稱和參數

ps aux 是用BSD的格式來顯示、其格式如下

同ps -ef 不同的有列有
USER      //用戶名 
%CPU      //進程占用的CPU百分比 
%MEM      //占用內存的百分比 
VSZ      //該進程使用的虛擬內存量(KB) 
RSS      //該進程占用的固定內存量(KB)(駐留中頁的數量) 
STAT      //進程的狀態 
START    //該進程被觸發啟動時間 
TIME      //該進程實際使用CPU運行的時間

其中STAT狀態位常見的狀態字符有
D      //無法中斷的休眠狀態(通常 IO 的進程); 
R      //正在運行可中在隊列中可過行的; 
S      //處於休眠狀態; 
T      //停止或被追蹤; 
W      //進入內存交換 (從內核2.6開始無效); 
X      //死掉的進程 (基本很少見); 
Z      //僵屍進程; 
<      //優先級高的進程 
N      //優先級較低的進程 
L      //有些頁被鎖進內存; 
s      //進程的領導者(在它之下有子進程); 
l      //多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads); 
+      //位於后台的進程組;

 

實例1:列出所有信號名稱
命令:kill -l
輸出:
[root@localhost test6]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

說明:
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)


實例2:得到指定信號的數值

[root@localhost test6]# kill -l KILL
[root@localhost test6]# kill -l SIGKILL
[root@localhost test6]# kill -l TERM
[root@localhost test6]# kill -l SIGTERM
[root@localhost test6]#


實例3:先用ps查找進程,然后用kill殺掉

命令:kill 3268
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill 3268


實例4:徹底殺死進程
命令:kill –9 3268 // -9 強制殺掉進程

 

pkill 是按照進程明殺死進程,發送信號與kill一樣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM