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

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

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

如何在 Linux 中按名稱終止進程?

[復(fù)制鏈接]

317

主題

317

帖子

3149

積分

四級會員

Rank: 4

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


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

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

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

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

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

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

1. 啟動 htop:
[/ol]htop

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


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

▲長按加群

回復(fù)

使用道具 舉報

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

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


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