掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在Linux操作系統(tǒng)中,進(jìn)程是指正在運行的程序?qū)嵗?。有時候,由于各種原因,我們需要停止某個進(jìn)程,這就需要用到殺掉進(jìn)程的命令。不過,殺掉進(jìn)程是一項比較敏感的操作,需要謹(jǐn)慎使用,否則可能會導(dǎo)致系統(tǒng)崩潰或數(shù)據(jù)丟失等問題。本篇文章將介紹如何在Linux上安全地殺掉進(jìn)程。

站在用戶的角度思考問題,與客戶深入溝通,找到相城網(wǎng)站設(shè)計與相城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋相城地區(qū)。
一、查看進(jìn)程
在Linux系統(tǒng)中,我們可以使用ps命令查看正在運行的進(jìn)程。ps命令有很多參數(shù)可以使用,下面是一些常用的參數(shù):
ps -A:顯示所有進(jìn)程
ps -u username:顯示指定用戶的進(jìn)程
ps -aux:顯示所有進(jìn)程的詳細(xì)信息
在查看進(jìn)程時,我們需要關(guān)注的是進(jìn)程的PID。PID是每個進(jìn)程都有的一個唯一標(biāo)識符,通過它我們可以確定要殺死的進(jìn)程。
二、殺死進(jìn)程
在Linux中,我們可以使用kill命令殺死進(jìn)程。kill命令有很多參數(shù),下面是一些常用的參數(shù):
kill PID:殺死指定進(jìn)程
kill -9 PID:強制殺死指定進(jìn)程
killall processname:殺死所有指定進(jìn)程名的進(jìn)程
其中,-9參數(shù)用于強制殺死進(jìn)程。需要注意的是,如果使用kill -9命令來殺死進(jìn)程,會直接向進(jìn)程發(fā)送SIGKILL信號,這會導(dǎo)致進(jìn)程無法做出任何清理工作,可能會對數(shù)據(jù)造成損害,因此建議先嘗試使用kill命令來平穩(wěn)地關(guān)閉進(jìn)程。
三、使用pkill命令殺死進(jìn)程
pkill命令與killall命令類似,可以殺死指定進(jìn)程名的所有進(jìn)程。它的使用方法也很簡單:
pkill processname
需要注意的是,與killall命令類似,如果指定的進(jìn)程名比較通用,可能會誤傷其他進(jìn)程,因此在使用pkill命令時,需要特別小心。
四、使用kill命令殺死僵尸進(jìn)程
僵尸進(jìn)程是指已經(jīng)完成了執(zhí)行,但原始進(jìn)程沒有正常退出的進(jìn)程。這些進(jìn)程會一直占用內(nèi)存空間,直到被完全銷毀。一旦遇到僵尸進(jìn)程,我們可以使用kill命令將其殺死。
需要注意的是,對于僵尸進(jìn)程,使用kill命令不一定能完全殺死它,還需要使用wtpid系統(tǒng)調(diào)用等方法,才能徹底清除它們。
五、
在使用Linux系統(tǒng)時,殺死進(jìn)程是一項基本的操作。雖然它看起來很簡單,但如果不謹(jǐn)慎使用,可能會給系統(tǒng)帶來很大的損失。因此,在殺死進(jìn)程之前,我們需要確認(rèn)該進(jìn)程是否可以被終止,并按照正確的方法來關(guān)閉它。以上就是關(guān)于如何在Linux上殺掉進(jìn)程的介紹,希望能對讀者有所幫助。
相關(guān)問題拓展閱讀:
Linux中殺掉一個進(jìn)程可以用kill和killall命令,killall命令用命令名字來殺死指定進(jìn)程,而kill命令則是用進(jìn)程PID來殺死進(jìn)程。
killall命令,顧名思義就是殺死所有以某個命令啟動的所有進(jìn)程,用killall命令殺死進(jìn)程的命令是這樣的(這里是殺死以httpd命令啟動的所有進(jìn)程):
killall -9 httpd
-9參數(shù)表示強制終止進(jìn)程。
最常用的是用kill命令結(jié)束進(jìn)程,但是kill命令需要用進(jìn)程的PID作為參數(shù)。如何知道指定進(jìn)程的PID呢?如果是通過進(jìn)程命令名字查看對應(yīng)PID,可以通過ps或pstree命令看到它的PID;如果是通過網(wǎng)絡(luò)監(jiān)聽端口號查看進(jìn)程,需要用netstat命令看看端口號對應(yīng)的進(jìn)程的PID。
ps命令用于查看系統(tǒng)所有進(jìn)程,而pstree命令以樹狀顯示進(jìn)程之間的關(guān)系,有助于判斷要殺死哪個進(jìn)程。記住在它們顯示的結(jié)果中記下需要結(jié)束的進(jìn)程PID。ps命令的常用用法是:
ps aux
-a參數(shù)表示不與終端有關(guān)的進(jìn)程也顯示出來。
pstree命令的常見用法是:
pstree -Aup
-p參數(shù)表示列出進(jìn)程PID。
netstat命令可以查看監(jiān)聽端口的進(jìn)程是哪個,常用的方式是:netstat -tlnp
這條命令的意思是列出系統(tǒng)里面監(jiān)聽網(wǎng)絡(luò)連接的端口號和相應(yīng)的進(jìn)程PID。
參數(shù)說明:
-t:表示列出TCP連接(也可以加上-u參數(shù)表示同時列出UDP網(wǎng)絡(luò)連接)
-l:表示列出正在網(wǎng)絡(luò)監(jiān)聽的服務(wù)
關(guān)鍵是下面兩個參數(shù):
-n:表示以端口號來顯示
-p:表示列出進(jìn)程PID
Local Address這一列下面就有端口號,可以看到它對應(yīng)的PID是多少,還有Program name那一列是進(jìn)程名字。同樣是要記下需要結(jié)束的進(jìn)程的PID。
知道了指定進(jìn)程的PID后,就可以用kill命令結(jié)束進(jìn)程了:
kill -9 PID號碼
或者kill -2 PID號碼
-9參數(shù)是強制結(jié)束進(jìn)程,而-2參數(shù)是相當(dāng)于用鍵盤組合鍵Ctrl+C的方式正常結(jié)束進(jìn)程。
方法比較多,列舉一二:
ps -ef | grep ***** | awk 改汪派'{cmd = “kill “$2; system(cmd)}’
ps 陵塵-ef | grep ***** | awk ‘核賀{print “kill ” $2}’ | sh
root:08 pts/:00:00 grep –color=auto fcitx
1.作用
kill命令用來中止一個進(jìn)程。
2.格式
kill pid …
kill -l
3.參數(shù)
-s:指定發(fā)送的信號。
-p:模擬發(fā)送信號。
-l:指定信號的名稱列表。
pid:要中止進(jìn)程的ID號。
Signal:表示信號。
4.說明
進(jìn)程是Linux系統(tǒng)中一個非常重要的概念。Linux是一個多任務(wù)的操作系統(tǒng),系統(tǒng)上經(jīng)常同時運行著多個進(jìn)程。我們不關(guān)心這些進(jìn)程究竟是如何分配的,或 者是內(nèi)核如何管理分配時間片的,所關(guān)心的是如何去控制這些進(jìn)程,讓它們能夠很好地為用戶服務(wù)。
Linux操作系統(tǒng)包括三種不同類型的進(jìn)程,每種進(jìn)程都有自己的特點和屬性。交互進(jìn)程是由一個Shell啟動的進(jìn)程。交互進(jìn)程既可以在前臺運行,也 可以在后臺運行。批處理進(jìn)程和終端沒有聯(lián)系,是一個進(jìn)程序列。監(jiān)控進(jìn)程(也稱系統(tǒng)守護(hù)進(jìn)程)時Linux系統(tǒng)啟動時啟動的進(jìn)程,并在后臺運行。例 如,httpd是著名的Apache服務(wù)器的監(jiān)控進(jìn)程。
kill命令的工作原理是,向Linux系統(tǒng)的內(nèi)核發(fā)送一個系統(tǒng)操作信號和某個程序的進(jìn)程標(biāo)識號,然后系統(tǒng)內(nèi)核就可以對進(jìn)程標(biāo)識號指定的進(jìn)程進(jìn)行操 作。比如在top命令中,我們看到系統(tǒng)運行許多進(jìn)程,有時就需要使用kill中止某些進(jìn)程來提高系統(tǒng)資源。系統(tǒng)多個虛擬控制臺的作用是當(dāng)一個程序出錯造成 系統(tǒng)死鎖時,可以切換到其它虛擬控制臺工作關(guān)閉這個程序。此時使用的命令就是kill,因為kill是大多數(shù)Shell內(nèi)部命令可以直接調(diào)用的。
5.應(yīng)用實例
(1)強行中止(經(jīng)常使用殺掉)一個進(jìn)程標(biāo)識號為324的進(jìn)程:
#kill -9 324
(2)解除Linux系統(tǒng)的死鎖
在Linux中有時會發(fā)生這樣一種情況:一個程序崩潰,并且處于死鎖的狀態(tài)。此時一般不用重新啟動計算機, 只需要中止(或者說是關(guān)閉)這個有問題的程序即 可。當(dāng)kill處于X-Window界面時,主要的程序(除了崩潰的程序之外)一般都已經(jīng)正常啟動了。此時打開一個終端,在那里中止有問題的程序。比如, 如果Mozilla瀏覽器程序出現(xiàn)了鎖死的情況,可以使用kill命令來中止所有包含有Mozolla瀏覽器的程序。首先用top命令查處該程序的 PID,然后使用kill命令停止這個程序:
#kill -SIGKILL XXX
其中,XXX是包含有Mozolla瀏覽器的程序的進(jìn)程標(biāo)識號。
(3)使用命令回收內(nèi)存
我們知道內(nèi)存對于系統(tǒng)是非常重要的,回收內(nèi)存可以提高系統(tǒng)資源。kill命令可以及時地中止一些“越軌”的程序或很長時間沒有相應(yīng)的程序。例如,使用 top命令發(fā)現(xiàn)一個無用 (Zombie) 的進(jìn)程,此時可以使用下面命令:
#kill -9 XXX
其中,XXX是無用的進(jìn)程標(biāo)識號。
然后使用下仔前游面命令:
#free
此時會發(fā)現(xiàn)可用內(nèi)存容量增加了。
(4)killall命令
Linux下還提供了一個killall命令,可以直接使用進(jìn)程的名字而不是進(jìn)程標(biāo)識號,例如:
# killall -HUP inetd
*殺死進(jìn)程最安全的方法是單純使用kill命令,不加修飾符,不帶標(biāo)志。
首先使用ps -ef命令確定要殺死進(jìn)程的PID,然后輸入以下命令:
# kill -pid
注釋:標(biāo)準(zhǔn)的kill命令通常都能達(dá)到目的。終止有問題的進(jìn)程,并把進(jìn)程的資源釋放給系統(tǒng)。然而,如果進(jìn)程啟動了子進(jìn)程,只殺死父進(jìn)程,子進(jìn)程仍在 運行,因此仍消耗資源。為了防止這些所謂的“僵尸進(jìn)程”,應(yīng)確保在殺死父進(jìn)程之前,先殺死其所有的子進(jìn)程?;趯O
——————————————————————————–
*確定要殺死進(jìn)程的PID或PPID
# ps -ef | grep httpd
——————————————————————————–
*以優(yōu)雅的方式結(jié)束進(jìn)程
# kill -l PID
-l選項告訴kill命令用好像啟動進(jìn)程的用戶已注銷的方式結(jié)束進(jìn)程。當(dāng)使用該選項時,kill命令也試圖殺死所留下的子進(jìn)程念銷。但這個命令也不是總 能成功–或許仍然需要先手工殺死子進(jìn)程,然后再殺死父進(jìn)程。
——————————————————————————–
*TERM信號
給父進(jìn)程發(fā)送一個TERM信號,試圖殺死它和它的子進(jìn)程。
# kill -TERM PPID
——————————————————————————–
*killall命令
killall命令殺死同一進(jìn)程組內(nèi)的所有進(jìn)程。其允許指定要終止的進(jìn)程的名稱,而非PID。
# killall httpd
——————————————————————————–
*停止和重啟進(jìn)程
有時候只想簡單的停止和重啟進(jìn)程。如下:
# kill -HUP PID
該命令讓Linux和緩的執(zhí)行進(jìn)程關(guān)閉,然后立即重啟。在配置應(yīng)用程序的時候,這個命令很方便,在對配置文件修改后需要重啟進(jìn)程時就可以執(zhí)行此命 令。
——————————————————————————–
*絕殺 kill -9 PID
同意的 kill -s SIGKILL
這個強大和危險的命令迫使進(jìn)程在運行時突然終止,進(jìn)程在結(jié)束后不能自我清理。危害是導(dǎo)致系統(tǒng)資源無法正常釋放,一般不推薦使用,除非其他辦法都無 效。
當(dāng)使用此命令時,一定要通過ps -ef確認(rèn)沒有剩下任何僵尸進(jìn)程。只能通過終止父進(jìn)程來消除僵尸進(jìn)程。如果僵尸進(jìn)程被init收養(yǎng),問題就比較嚴(yán)重了。殺死init進(jìn)程意味著關(guān)閉系統(tǒng)。
如果系統(tǒng)中有僵尸進(jìn)程,并且其父進(jìn)程是init,而且僵尸進(jìn)程占用了大量的系統(tǒng)資源,那么就需要在某個時候重啟機器以清除進(jìn)程表了。
查看系統(tǒng)所有進(jìn)程,從中找到那個要結(jié)束的進(jìn)程的PID,輸入命令:
ps aux
-a參數(shù)表示不與終端有關(guān)的進(jìn)程也顯示出來。
或者將ps命令的結(jié)果通過管道讓grep命令篩選出那個進(jìn)程:
ps aux |grep 單前滾引號括起來的進(jìn)程名字
還有通過端口號找到進(jìn)程的,輸入命令:netstat -tlnp
這個命令表示列出系統(tǒng)里面監(jiān)聽明悔鏈網(wǎng)絡(luò)的TCP連接和相應(yīng)的進(jìn)程PID,這里也可以用管道和grep命令過濾端口號(比如:netstat -tlnp |grep ’80’激孫)。
參數(shù)說明:
-t:表示列出TCP連接
-l:表示列出正在網(wǎng)絡(luò)監(jiān)聽的服務(wù)
-n:表示以端口號來顯示
-p:表示列出進(jìn)程PID
然后找到Local Address這一列下面某個端口號,再看它的PID是多少。
知道了進(jìn)程的PID,就可以用kill命令結(jié)束掉這個進(jìn)程,命令格式:
kill -9 某個PID
-9參數(shù)表示是強制結(jié)束進(jìn)程。
ps 命令查找相關(guān)進(jìn)程的pid號
kill 命令殺死
關(guān)于linux 殺掉進(jìn)程的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務(wù)眾多企業(yè)。電話:028-86922220

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流