Linux kill 命令 以及USR1 信號解釋


kill 中的USR信號解釋

USR1亦通常被用來告知應用程序重載配置文件;例如,向Apache HTTP服務器發送一個USR1信號將導致以下步驟的發生:停止接受新的連接,等待當前連接停止,重新載入配置文件,重新打開日志文件,重啟服務器,從而實現相對平滑的不關機的更改。

POSIX兼容的平台上,SIGUSR1SIGUSR2是發送給一個進程信號,它表示了用戶定義的情況。它們的符號常量頭文件signal.h中定義。在不同的平台上,信號的編號可能發生變化,因此需要使用符號名稱。

 

kill -HUP pid 或者 killall -HUP pName:
其中pid是進程標識,pName是進程的名稱
如果想要更改配置而不需停止並重新啟動服務,可以使用上面兩個命令。在對配置文件作必要的更改后,發出該命令以動態更新服務配置。
根據約定,當你發送一個掛起信號(信號1或HUP)時,大多數服務器進程(所有常用的進程)都會進行復位操作並重新加載它們的配置文件。

 

kill 命令介紹

-l  信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
-a  當處理當前進程時,不限制命令名和進程號的對應關系
-p  指定kill 命令只打印相關進程的進程號,而不發送任何信號
-s  指定發送信號
-u  指定用戶 
注意:
1、kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發出終止信號(15),這個信號可以被進程捕獲,使得進程在退出之前可以清理並釋放資源。也可以用kill向進程發送特定的信號。例如:
kill -2 123 它的效果等同於在前台運行PID為123的進程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數的kill命令或最多使用-9信號。

2、應注意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。
要撤銷所有的后台作業,可以輸入kill 0。因為有些在后台運行的命令會啟動多個進程,跟蹤並找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill 0來終止所有由當前shell啟動的進程,是個有效的方法。

說明:

只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:

HUP    1    終端斷線

INT     2    中斷(同 Ctrl + C)

QUIT    3    退出(同 Ctrl + \)

TERM   15    終止

KILL    9    強制終止

CONT   18    繼續(與STOP相反, fg/bg命令)

STOP    19    暫停(同 Ctrl + Z)

 

實例:殺死指定用戶所有進程

命令:

kill -9 $(ps -ef | grep peidalinux)

kill -u peidalinux

輸出:

[root@localhost ~]# kill -9 $(ps -ef | grep peidalinux) 

[root@localhost ~]# kill -u peidalinux

說明:

方法一,過濾出hnlinux用戶進程並殺死


免責聲明!

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



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