linux 信號 SIGINT SIGTERM SIGKILL區別


SIGINT SIGTERM SIGKILL區別

三者都是結束/終止進程運行。

1.SIGINT SIGTERM區別

前者與字符ctrl+c關聯,后者沒有任何控制字符關聯。

前者只能結束前台進程,后者則不是。

2.SIGTERM SIGKILL的區別

前者可以被阻塞、處理和忽略,但是后者不可以。KILL命令的默認不帶參數發送的信號就是SIGTERM.讓程序有好的退出。因為它可以被阻塞,所以有的進程不能被結束時,用kill發送后者信號,即可。即:kill-9 進程號。

 

信號是進程間通信的底層形式。

linux有標准信號32個,從32-63的信號是“實時”信號。

發送信號的原因

硬件異常:如0作為除數,內核會發送SIGFPE(信號值8)

軟件異常:如進程終止時,內核會給父進程發送SIGCHLE(信號值17),窗口大小調整,應用程序會收到SIGWINCH(信號值28)

 

普通用戶使用的信號:

信號值      符號      行為

2          SIGINT    進程終端,CTRL+C

9          SIGKILL   強制終端

15         SIGTEM    請求中斷

20         SIGTOP    停止(掛起)進程 CRTL+D

 

1. kill

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

kill的默認信號是15,后面接的是pid號數字

kill -15 12345   //12345

 

2、pkill

kill的默認信號是15,后面接的是進程名

pkill -u user 選擇用戶user所擁有的進程

       -t term 選擇term終端控制的進程,也可以是pst/1,pst/2等

 

3、killall

killall 通過程序的名字,直接殺死所有進程。

用法:killall 正在運行的程序名

killall 也和ps或pgrep 結合使用,比較方便;通過ps或pgrep 來查看哪些程序在運行;

舉例:

[root@localhost beinan]# pgrep -l vi

1129 gaim

[root@localhost beinan]# killall vi

 

4、在top中使用k鍵中斷

 

 轉自http://blog.csdn.net/ashlingr/article/details/8057825


免責聲明!

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



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