電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 79|回復(fù): 0
收起左側(cè)

如何在 Linux 中按名稱終止進(jìn)程?

[復(fù)制鏈接]

317

主題

317

帖子

3149

積分

四級(jí)會(huì)員

Rank: 4

積分
3149
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-29 11:04:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


在 Linux 系統(tǒng)中,進(jìn)程是指正在執(zhí)行的程序或任務(wù)的實(shí)例。每個(gè)程序在運(yùn)行時(shí)會(huì)創(chuàng)建一個(gè)或多個(gè)進(jìn)程,并且這些進(jìn)程在后臺(tái)或前臺(tái)執(zhí)行。雖然大部分進(jìn)程是正常運(yùn)行的,但有時(shí)候系統(tǒng)中可能會(huì)出現(xiàn)一些故障進(jìn)程,這些進(jìn)程可能會(huì)導(dǎo)致系統(tǒng)資源浪費(fèi)或系統(tǒng)變得緩慢。在這種情況下,終止這些不正常的進(jìn)程是一種常見的解決辦法。
Linux 提供了多種方法來終止進(jìn)程,最常見的就是通過進(jìn)程的名稱或 PID(進(jìn)程ID)來進(jìn)行操作。在本篇文章中,我們將詳細(xì)介紹如何在 Linux 中按進(jìn)程名稱終止進(jìn)程,并重點(diǎn)講解使用 kill、pkill 和 killall 這三種命令來實(shí)現(xiàn)這一功能。

理解 Linux 中的進(jìn)程在 Linux 系統(tǒng)中,所有的應(yīng)用程序和任務(wù)都是以進(jìn)程的形式運(yùn)行的。每個(gè)進(jìn)程都有一個(gè)唯一的 PID(進(jìn)程ID)來標(biāo)識(shí)。系統(tǒng)中可以同時(shí)運(yùn)行多個(gè)進(jìn)程,每個(gè)進(jìn)程都可能占用不同的資源,如 CPU、內(nèi)存、磁盤等。
進(jìn)程可以處于多種不同的狀態(tài),常見的進(jìn)程狀態(tài)有:
? 運(yùn)行(Running):進(jìn)程正在使用 CPU 資源進(jìn)行計(jì)算。
? 就緒(Ready):進(jìn)程已經(jīng)準(zhǔn)備好,可以在 CPU 上運(yùn)行,等待系統(tǒng)分配 CPU 時(shí)間片。
? 等待(Waiting):進(jìn)程正在等待某些事件的發(fā)生,如等待 I/O 操作完成。
? 掛起(Stopped):進(jìn)程因某些原因暫停,可能是由于信號(hào)的發(fā)送或外部干預(yù)。
? 僵尸(Zombie):進(jìn)程已經(jīng)結(jié)束,但仍保留在進(jìn)程表中等待父進(jìn)程讀取其退出狀態(tài)。
每個(gè)運(yùn)行中的進(jìn)程都由系統(tǒng)分配一個(gè)唯一的 PID(進(jìn)程 ID)。這個(gè) ID 是一個(gè)正整數(shù),可以用來對(duì)進(jìn)程進(jìn)行管理或終止。
可以通過一些命令查看系統(tǒng)中的進(jìn)程,例如 ps 或 top,這兩個(gè)命令都可以列出當(dāng)前系統(tǒng)中的所有進(jìn)程以及它們的狀態(tài)、PID 等信息。
為什么要終止進(jìn)程?進(jìn)程有時(shí)候會(huì)因?yàn)槎喾N原因?qū)е虏徽5倪\(yùn)行,尤其是在程序崩潰或進(jìn)入死循環(huán)時(shí),可能會(huì)消耗大量系統(tǒng)資源,影響系統(tǒng)性能,甚至使操作系統(tǒng)崩潰。為了恢復(fù)系統(tǒng)的正常運(yùn)行,終止不必要或出問題的進(jìn)程是一個(gè)常見的操作。
終止進(jìn)程的常見原因包括:
? 進(jìn)程凍結(jié):應(yīng)用程序或進(jìn)程失去響應(yīng),無法正常關(guān)閉。
? 資源占用:進(jìn)程占用了過多的 CPU 或內(nèi)存資源,導(dǎo)致系統(tǒng)變慢。
? 安全問題:惡意進(jìn)程或未經(jīng)授權(quán)的進(jìn)程可能會(huì)損害系統(tǒng)安全,需要立即終止。
如何按進(jìn)程名稱終止進(jìn)程?在 Linux 中,終止進(jìn)程通常有兩種方式:通過 PID(進(jìn)程 ID)或者 進(jìn)程名稱。PID 是唯一標(biāo)識(shí)每個(gè)進(jìn)程的數(shù)字,可以直接通過 kill 命令來終止。然而,如果你不想手動(dòng)查找每個(gè)進(jìn)程的 PID,可以直接通過進(jìn)程的名稱來終止進(jìn)程。以下是幾種常用的終止進(jìn)程的命令和方法。
使用 pgrep 查找進(jìn)程在終止進(jìn)程之前,通常需要知道進(jìn)程的 PID。pgrep 命令可以根據(jù)進(jìn)程名稱查找進(jìn)程的 PID,方便我們進(jìn)行后續(xù)的操作。
pgrep [選項(xiàng)] [進(jìn)程名稱]? -u:列出特定用戶所擁有的進(jìn)程 PID。
? -c:統(tǒng)計(jì)符合條件的進(jìn)程數(shù)量。
? -I:只列出進(jìn)程名稱。
? -a:列出進(jìn)程的完整路徑。
如果你想查找所有名為 gnome 的進(jìn)程,可以使用以下命令:
pgrep nginx該命令將返回所有匹配進(jìn)程名稱 gnome 的進(jìn)程 PID,例如:

這些就是 nginx 相關(guān)進(jìn)程的 PID。你可以使用 pgrep 命令查找多個(gè)進(jìn)程,并根據(jù) PID 執(zhí)行終止操作。
使用 kill 命令按 PID 終止進(jìn)程kill 命令通常用來按 PID 終止進(jìn)程。通過 pgrep 獲取到進(jìn)程的 PID 后,你可以使用 kill 命令將其終止。
kill [信號(hào)] [進(jìn)程ID]? 默認(rèn)情況下,kill 命令發(fā)送 SIGTERM(信號(hào) 15),請(qǐng)求進(jìn)程優(yōu)雅地終止。
? 你也可以使用 SIGKILL(信號(hào) 9)來強(qiáng)制終止進(jìn)程,這會(huì)立即中止進(jìn)程的執(zhí)行。
假設(shè)你要終止進(jìn)程 PID 為 1169235 的 nginx 進(jìn)程:
kill 1169235如果進(jìn)程沒有響應(yīng),你可以使用更強(qiáng)制的方法:
kill -9 1169235這將強(qiáng)制終止進(jìn)程 nginx。
使用 pkill 命令按名稱終止進(jìn)程pkill 命令是一種更加方便的方式,它允許你按進(jìn)程名稱來終止進(jìn)程,無需首先查找 PID。pkill 通過進(jìn)程名稱匹配正在運(yùn)行的進(jìn)程,并發(fā)送信號(hào)來終止它們。
pkill [選項(xiàng)] [進(jìn)程名稱]假設(shè)你想要終止所有名為 gnome 的進(jìn)程,可以使用以下命令:
pkill nginx該命令會(huì)終止所有名稱為 nginx 的進(jìn)程。如果你想強(qiáng)制終止進(jìn)程,可以使用 -9 選項(xiàng):
pkill -9 nginx

這將立即強(qiáng)制終止所有名為 nginx 的進(jìn)程。
? -f:匹配進(jìn)程的完整命令行(包括命令和參數(shù))。
? -u:只匹配由指定用戶啟動(dòng)的進(jìn)程。
? -9:強(qiáng)制終止進(jìn)程。
使用 killall 命令按名稱終止進(jìn)程killall 命令類似于 pkill,但是它會(huì)終止所有與指定名稱匹配的進(jìn)程。killall 命令可以發(fā)送不同的信號(hào)來終止進(jìn)程。
killall [選項(xiàng)] [進(jìn)程名稱]如果你想終止所有名為 nginx 的進(jìn)程,可以使用:
killall nginx如果你希望強(qiáng)制終止所有匹配的進(jìn)程,可以使用 -9 選項(xiàng):
killall -9 nginx

發(fā)送信號(hào)在使用 kill、pkill 或 killall 時(shí),你可以指定不同的信號(hào)來控制進(jìn)程的行為。常用的信號(hào)有:
? -9 (SIGKILL):強(qiáng)制終止進(jìn)程,不進(jìn)行清理。
? -15 (SIGTERM):請(qǐng)求進(jìn)程正常終止,進(jìn)程可以清理資源后退出。
? -1 (SIGHUP):重新加載進(jìn)程,通常用于讓進(jìn)程重新加載其配置文件。
通過 top 或 htop 工具查看進(jìn)程如果你想實(shí)時(shí)查看并手動(dòng)終止進(jìn)程,可以使用 top 或 htop 工具。這些工具提供了一個(gè)交互式界面來查看當(dāng)前的進(jìn)程狀態(tài),并允許你選擇進(jìn)程進(jìn)行操作。
? top:默認(rèn)顯示所有進(jìn)程,可以按 k 鍵來選擇并終止一個(gè)進(jìn)程。
? htop:是 top 的增強(qiáng)版,提供了更友好的交互式界面,允許你更方便地篩選和操作進(jìn)程。你可以通過按下 F9 鍵來發(fā)送一個(gè)信號(hào)終止進(jìn)程。
使用 top 終止進(jìn)程:1. 打開 top 命令:
[/ol]top

1. 在 top 界面中,你會(huì)看到一個(gè)正在運(yùn)行的進(jìn)程列表。找到你想要終止的進(jìn)程的 PID。
2. 按下 k 鍵,會(huì)提示你輸入 PID。輸入要終止的進(jìn)程的 PID,按下回車。
3. 你可以選擇發(fā)送 SIGTERM(15)或 SIGKILL(9)信號(hào)。如果沒有響應(yīng),可以選擇使用 9 強(qiáng)制終止進(jìn)程。
[/ol]使用 htop 終止進(jìn)程:htop 是 top 的增強(qiáng)版本,提供了更直觀的操作界面和更多的功能。如果你的系統(tǒng)沒有安裝 htop,可以通過以下命令進(jìn)行安裝:
sudo apt install htop   # 在 Debian/Ubuntu 系統(tǒng)上
sudo yum install htop   # 在 CentOS/RHEL 系統(tǒng)上

1. 啟動(dòng) htop:
[/ol]htop

1. 在 htop 界面中,你可以看到一個(gè)進(jìn)程列表,并且進(jìn)程會(huì)按 CPU、內(nèi)存使用量等字段排序。
2. 使用箭頭鍵定位到你要終止的進(jìn)程,按下 F9 鍵。
3. 你將看到一個(gè)菜單,列出了多種信號(hào)。選擇 9(SIGKILL)來強(qiáng)制終止進(jìn)程,或者選擇其他信號(hào)根據(jù)需要終止進(jìn)程。
[/ol]


大事!運(yùn)維漫談-技術(shù)交流群對(duì)外開放!
掃碼可添加小編微信,申請(qǐng)進(jìn)

▲長按加群

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表