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