Linux中kill,pkill,killall和xkill命令汇总讲解
生活随笔
收集整理的這篇文章主要介紹了
Linux中kill,pkill,killall和xkill命令汇总讲解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
終止一個進程或終止一個正在運行的程式,一般是通過 kill 、killall、pkill、xkill 等進行。比如一個程式已死掉,但又不能退出,這時就應該考慮應用這些工具。
另外應用的場合就是在服務器管理中,在不涉及數據庫服務器程式的父進程的停止運行,也能用這些工具來終止。為什么數據庫服務器的父進程不能用這些工具殺死呢?原因非常簡單,這些工具在強行終止數據庫服務器時,會讓數據庫產生更多的文件碎片,當碎片達到一定程度的時候,數據庫就有崩潰的危險。比如mysql
服務器最佳是按其正常的程式關閉,而不是用pkill mysqld 或killall mysqld這樣危險的動作;當然對于占用資源過多的數據庫子進程,我們應該用kill 來殺掉。
1、 kill
kill的應用是和ps 或pgrep 命令結合在一起使用的;
kill 的用法:
kill [信號代碼]? ?進程ID
注:信號代碼能省略;我們常用的信號代碼是 -9 ,表示強制終止;
例如:
[vivian@localhost vivian]$ ps -auxf | grep httpd
vivian?? 27005? 0.0? 0.0? 4928? 680 pts/0??? S??? 09:42?? 0:00? |?????????? \_ grep httpd
root????? 1742? 0.0? 0.0 19588? 560 ???????? S??? Nov24?? 0:00 /var/email/apache/bin/httpd -k start
nobody??? 1744? 0.0? 0.0 11304? 540 ???????? S??? Nov24?? 0:03? \_ /var/email/apache/bin/httpd -k start
nobody?? 23055? 0.0? 2.3 327748 24232 ?????? S??? Nov26?? 1:43? \_ /var/email/apache/bin/httpd -k start
nobody?? 23087? 0.0? 2.4 328252 24832 ?????? S??? Nov26?? 1:38? \_ /var/email/apache/bin/httpd -k start
nobody?? 10607? 0.0? 2.3 327144 24064 ?????? S??? Nov27?? 1:12? \_ /var/email/apache/bin/httpd -k start
我們看上面例子中的第二列,就是進程PID的列,其中1742是httpd服務器的父進程,剩下列出的進程都是1742的子進程;如果我們殺掉父進程1742的話,其下的子進程也會跟著死掉;
[vivian@localhost vivian]$ kill 1742
[vivian@localhost vivian]$ps -auxf | grep httpd //已經找不到httpd了
對于僵尸進程,能用kill -9 來強制終止退出;
比如一個程式已完全死掉,如果kill 不加信號強度是沒有辦法退出,最佳的辦法就是加信號強度 -9?
2 、killall
killall 通過程式的名字,直接殺死所有進程,咱們簡單說一下就行了。
用法:killall 正在運行的程式名
killall 也和ps或pgrep 結合使用,比較方便;通過ps或pgrep 來查看哪些程式在運行;
舉例:
[vivian@localhost vivian]$ pgrep -l? httpd
1742 httpd
1744 httpd
23055 httpd
23087 httpd
10607 httpd
[vivian@localhost vivian]$ killall httpd
3、 pkill
pkill 和killall 應用方法差不多,也是直接殺死運行中的程式;如果你想殺掉單個進程,請用kill 來殺掉。
應用方法:
#pkill??? 正在運行的程式名
4 、xkill
xkill 是在桌面用的殺死圖像界面的程式。比如當firefox 出現崩潰不能退出時,點鼠標就能殺死firefox 。當xkill運行時出來和個人腦骨的圖標,哪個圖像程式崩潰一點就OK了。如果你想終止xkill ,就按右鍵取消;
xkill 調用方法:
[vivian@localhost vivian]$ xkill
另外應用的場合就是在服務器管理中,在不涉及數據庫服務器程式的父進程的停止運行,也能用這些工具來終止。為什么數據庫服務器的父進程不能用這些工具殺死呢?原因非常簡單,這些工具在強行終止數據庫服務器時,會讓數據庫產生更多的文件碎片,當碎片達到一定程度的時候,數據庫就有崩潰的危險。比如mysql
服務器最佳是按其正常的程式關閉,而不是用pkill mysqld 或killall mysqld這樣危險的動作;當然對于占用資源過多的數據庫子進程,我們應該用kill 來殺掉。
1、 kill
kill的應用是和ps 或pgrep 命令結合在一起使用的;
kill 的用法:
kill [信號代碼]? ?進程ID
注:信號代碼能省略;我們常用的信號代碼是 -9 ,表示強制終止;
例如:
[vivian@localhost vivian]$ ps -auxf | grep httpd
vivian?? 27005? 0.0? 0.0? 4928? 680 pts/0??? S??? 09:42?? 0:00? |?????????? \_ grep httpd
root????? 1742? 0.0? 0.0 19588? 560 ???????? S??? Nov24?? 0:00 /var/email/apache/bin/httpd -k start
nobody??? 1744? 0.0? 0.0 11304? 540 ???????? S??? Nov24?? 0:03? \_ /var/email/apache/bin/httpd -k start
nobody?? 23055? 0.0? 2.3 327748 24232 ?????? S??? Nov26?? 1:43? \_ /var/email/apache/bin/httpd -k start
nobody?? 23087? 0.0? 2.4 328252 24832 ?????? S??? Nov26?? 1:38? \_ /var/email/apache/bin/httpd -k start
nobody?? 10607? 0.0? 2.3 327144 24064 ?????? S??? Nov27?? 1:12? \_ /var/email/apache/bin/httpd -k start
我們看上面例子中的第二列,就是進程PID的列,其中1742是httpd服務器的父進程,剩下列出的進程都是1742的子進程;如果我們殺掉父進程1742的話,其下的子進程也會跟著死掉;
[vivian@localhost vivian]$ kill 1742
[vivian@localhost vivian]$ps -auxf | grep httpd //已經找不到httpd了
對于僵尸進程,能用kill -9 來強制終止退出;
比如一個程式已完全死掉,如果kill 不加信號強度是沒有辦法退出,最佳的辦法就是加信號強度 -9?
2 、killall
killall 通過程式的名字,直接殺死所有進程,咱們簡單說一下就行了。
用法:killall 正在運行的程式名
killall 也和ps或pgrep 結合使用,比較方便;通過ps或pgrep 來查看哪些程式在運行;
舉例:
[vivian@localhost vivian]$ pgrep -l? httpd
1742 httpd
1744 httpd
23055 httpd
23087 httpd
10607 httpd
[vivian@localhost vivian]$ killall httpd
3、 pkill
pkill 和killall 應用方法差不多,也是直接殺死運行中的程式;如果你想殺掉單個進程,請用kill 來殺掉。
應用方法:
#pkill??? 正在運行的程式名
4 、xkill
xkill 是在桌面用的殺死圖像界面的程式。比如當firefox 出現崩潰不能退出時,點鼠標就能殺死firefox 。當xkill運行時出來和個人腦骨的圖標,哪個圖像程式崩潰一點就OK了。如果你想終止xkill ,就按右鍵取消;
xkill 調用方法:
[vivian@localhost vivian]$ xkill
總結
以上是生活随笔為你收集整理的Linux中kill,pkill,killall和xkill命令汇总讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sysctl: 深入使用Linux的必经
- 下一篇: linux 其他常用命令