歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

RHEL6系統進程管理之四進程管理kill命令

我們就來看看RHEL6系統進程的管理了
我們知道,一般程序本身都會帶自身的管理程序,如關閉、重新啟動。除了自帶的,我們也可以通過發信號的方式來告訴程序需要做什麼,這就是下面我們要介紹的內容。

先來了解一下幾個常用的信號

[root@yufei ~]# 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系統中有這麼多的信號,我們不用管他,只要來了解幾個常用的就OK了,如果想仔細的研究的朋友,請到網上找相應的內容,或者是查看signal的幫助(man 7 signal 如果沒有此命令,請安裝man-pages軟件包)。

1 SIGHUP 啟動被終止的程序,可讓該 PID 重新讀取自己的配置文件,類似重新啟動

2 SIGINT 相當於用鍵盤輸入 ctrl+c 來中斷一個程序

9 SIGKILL 代表強制停止一個程序的進行,如果該程序進行到一半, 那麼尚未完成的部分可能會有『半產品』產生,類似 vim會有 .filename.swp 保留下來

15 SIGTERM 以正常的結束程序來終止該程序。由於是正常的終止,所以後續的動作會將他完成。不過,如果該程序已經發生問題,就是無法使用正常的方法終止時, 輸入這個 signal 也是沒有用的。

17 SIGSTOP 相當於用鍵盤輸入 ctrl+z 來暫停一個程序

上面的數字是信號代碼,而SIG*就是信號,這兩個是等同的哦。

 

進程管理命令kill,killall,pkill,xkill詳解
那麼我們如何傳送一個信號給某個進程呢?就要通過 kill 、killall、pkill、xkill了。下面就來看看他們是如何使用的。

kill的應用是和ps 或pgrep 命令結合在一起使用的;

kill 的用法:

kill [信號][信號代碼]  進程ID

注意:信號或信號代碼只要用一個就OK了。

如 

[root@yufei ~]# ps auxf |grep httpd
root      3890  0.0  0.3 103228  864 pts/0    S+  22:25  0:00          \_ grep httpd
root      3879  0.5  4.1 281892 10220 ?        Ss  22:25  0:00 /usr/sbin/httpd
apache    3881  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3882  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3883  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3884  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3885  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3886  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3887  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3888  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd

第二列就是進程的ID了,而3879 我們可以明顯的看出來他是httpd服務器的父進程,從3881到3888是httpd服務器的子進程了,如果殺死子進程,只是針對自己起作用。 

[root@yufei ~]#  kill -15 3888
[root@yufei ~]# ps auxf |grep httpd
root      3893  0.0  0.3 103228  864 pts/0    S+  22:28  0:00          \_ grep httpd
root      3879  0.0  4.1 281892 10220 ?        Ss  22:25  0:00 /usr/sbin/httpd
apache    3881  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3882  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3883  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3884  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3885  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3886  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd
apache    3887  0.0  2.2 281892  5548 ?        S    22:25  0:00  \_ /usr/sbin/httpd

3888這個進程沒有了

而如果殺死父進程,那麼所有的子進程也就完了

 

[root@yufei ~]#  kill -15 3879
[root@yufei ~]# ps auxf |grep httpd
root      3895  0.0  0.0  2644  168 pts/0    D+  22:29  0:00          \_ grep httpd

我們再啟動httpd服務

[root@yufei ~]# service httpd start
Starting httpd:                                            [  OK  ]

[root@yufei ~]# ps auxf |grep httpd
root      3920  0.0  0.3 103228  860 pts/0    S+  22:30  0:00          \_ grep httpd
root      3909  0.2  4.1 281892 10220 ?        Ss  22:30  0:00 /usr/sbin/httpd
apache    3911  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3912  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3913  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3914  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3915  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3916  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3917  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
apache    3918  0.0  2.2 281892  5548 ?        S    22:30  0:00  \_ /usr/sbin/httpd
[root@yufei ~]# kill -1 3909

Copyright © Linux教程網 All Rights Reserved