在Linux系統中,進程(Process)是程序運行時的實例,就像一個正在執行的“任務”。管理進程可以幫助我們查看系統中哪些程序在運行、監控資源佔用情況,以及在程序異常時終止它們。對於新手來說,掌握幾個核心的進程管理命令,能快速解決日常遇到的問題。
一、查看進程:ps 命令¶
作用:ps 是最基礎的進程查看工具,能列出當前系統中運行的進程狀態。
基本用法:直接輸入 ps 或帶參數,常用組合是 ps -aux 或 ps -ef(a 顯示所有用戶進程,u 顯示詳細用戶信息,x 顯示無終端的進程;e 顯示所有進程,f 顯示完整格式)。
示例:
輸入 ps -aux,會看到類似以下輸出(簡化版):
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19560 1164 ? Ss 10:00 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 10:00 0:00 [kthreadd]
...
關鍵列解釋:
- PID:進程ID(唯一標識,後續操作的“身份證號”);
- USER:運行進程的用戶;
- %CPU/%MEM:CPU和內存佔用率;
- STAT:進程狀態(R=運行、S=睡眠、Z=殭屍進程等);
- COMMAND:啓動進程的命令。
二、即時監控進程:top 命令¶
作用:top 比 ps 更強大,能動態即時更新進程信息,適合監控系統負載和資源變化。
基本用法:直接輸入 top,界面會自動刷新(默認3秒一次)。
常用操作:
- 按 P:按CPU使用率從高到低排序;
- 按 M:按內存使用率從高到低排序;
- 按 k:終止進程(輸入目標PID,按回車);
- 按 q:退出 top。
注意:top 會持續運行,按 q 退出,不要直接關閉終端窗口(否則進程可能繼續佔用資源)。
三、終止進程:kill 和 killall¶
作用:當程序卡死或異常時,需要終止進程。kill 通過PID終止,killall 通過進程名終止。
1. kill 命令¶
- 用法:
kill [信號] PID(信號默認是15,正常終止;9=強制終止)。 - 示例:
# 先通過ps找到目標進程PID,比如“firefox”的PID是1234
ps -aux | grep firefox
# 終止進程(先嚐試正常終止)
kill 1234
# 若進程無響應,強制終止
kill -9 1234
- 注意:
-9是“硬終止”,可能導致數據丟失(如未保存的文件),僅在程序無響應時使用。
2. killall 命令¶
- 用法:
killall [信號] 進程名(直接按名稱終止,無需找PID)。 - 示例:
# 終止所有名爲“firefox”的進程
killall -9 firefox
- 優勢:適合知道進程名但記不住PID的場景,比逐個
kill更高效。
四、進程樹狀圖:pstree¶
作用:以樹狀圖顯示進程的父子關係,直觀展示程序的層級結構。
基本用法:直接輸入 pstree,或加參數 p(顯示PID)、a(顯示完整路徑)。
示例:
pstree -ap
# 輸出類似:
systemd(1)───sshd(1234)───bash(5678)───pstree(9012)
優勢:快速理解程序之間的依賴關係(如 bash 是 pstree 的父進程)。
五、後臺作業管理:jobs、bg、fg¶
場景:在終端運行程序時,不想一直佔用前臺(如編譯代碼、下載大文件)。
1. jobs 命令¶
- 作用:查看後臺暫停的作業(用
Ctrl+Z暫停的任務)。
2. bg 和 fg¶
bg:將後臺暫停的作業恢復爲運行狀態(bg %作業號,作業號在jobs中顯示)。fg:將後臺作業調回前臺運行(fg %作業號)。
示例:
# 啓動一個長時間任務(如編譯),後臺運行
make -j8 &
# 若中途想暫停,按 Ctrl+Z,終端顯示:[1]+ Stopped make -j8
# 查看後臺作業:jobs
# 恢復後臺運行:bg 1
# 調回前臺:fg 1
新手注意事項¶
- 不要終止系統關鍵進程:如
init、systemd、sshd等,否則系統可能崩潰。 - 確認PID再操作:用
ps或pgrep(按名查PID)確認進程PID,避免誤殺。 - 普通用戶權限:普通用戶只能終止自己啓動的進程,終止其他用戶進程需
sudo或root權限。
掌握以上命令,就能應對Linux系統中90%的進程管理場景。日常工作中,ps 查進程、top 監控資源、kill 終止異常進程是最核心的組合。遇到問題時,可通過 man 命令 查看詳細手冊(如 man ps),多練習就能熟練使用!