萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 進程管理核心技巧:ps、top、kill、nice、作業控制完整圖解

Linux 進程管理是系統維運、效能分析、故障排除的基石。本文系統整理 ps、pstree、pgrep、pidof、top、kill/killall、nice/renice、前後台作業控制、訊號機制 等核心工具與技巧,附參數速查表與實戰場景,助你精準掌控每一個進程。

一、ps:靜態進程快照

風格差異

  • SysV (POSIX):選項前加 -,如 ps -ef
  • BSD:選項**不加** -,如 ps aux
  • 現代 Linux 兩者皆支援,輸出欄位略異。

常用組合

指令用途關鍵欄位
ps aux所有進程完整資訊 (BSD)USER, PID, %CPU, %MEM, VSZ, RSS, STAT, START, TIME, COMMAND
ps -ef所有進程標準格式 (SysV)UID, PID, PPID, C, STIME, TTY, TIME, CMD
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | headCPU 前 10 大進程自訂欄位 + 排序
ps -C nginx -o pid,ppid,cmd依程式名稱過濾精準定位特定服務
ps -L -p PID顯示指定 PID 的所有執行緒 (LWP)排查多執行緒問題

STAT 狀態碼速查

碼含義
RRunning/Runnable (執行/就緒)
SSleeping (可中斷睡眠)
DUninterruptible Sleep (不可中斷睡眠,通常等 I/O)
TStopped (工作控制停止/追蹤)
ZZombie (殭屍,父程序未 wait)
<High Priority (高優先序)
NLow Priority (低優先序)
+Foreground Process Group (前台進程組)
lMulti-threaded (多執行緒)
sSession Leader (會話領頭)

二、進程樹與查找工具

  • pstree -p:樹狀顯示父子關係,含 PID,-a 顯示完整命令列。
  • pgrep -u user -f pattern:依使用者/完整命令列模式搜尋 PID。
  • pidof nginx:快速取得守護進程 PID (適用單一主進程服務)。

三、top / htop:動態即時監控

top 互動熱鍵

鍵功能
M依駐留記憶體 (RSS) 排序
P依 CPU 使用率排序 (預設)
T依累積 CPU 時間排序
c切換顯示完整命令列
1切換顯示各 CPU 核心使用率
k殺死進程 (輸入 PID + 訊號)
r重新設定 nice 值 (輸入 PID + nice)
d改變重繪間隔 (秒)
q離開

啟動參數:top -d 1 -b -n 5 > top.log (每 1 秒批次模式寫入 5 次,適合記錄腳本)。

htop (強烈建議安裝)

  • 彩色、滑鼠支援、樹狀檢視、F2 設定欄位、F3 搜尋、F4 過濾、F9 圖形化殺進程,體驗遠優於 top。

四、訊號與終止進程

重要訊號

編號名稱用途預設動作
1SIGHUP終端斷開/重讀配置 (nginx -s reload)終止
2SIGINTCtrl+C 中斷前台程式終止
9SIGKILL**強制殺死,不可捕捉/忽略/阻塞**終止
15SIGTERM優雅終止 (預設),程式可釋放資源、存檔終止
18SIGCONT繼續已停止進程繼續
19SIGSTOP暫停進程 (不可捕捉)停止

kill 指定訊號三種寫法 (等效)

kill -9 1234
kill -SIGKILL 1234
kill -KILL 1234

killall / pkill:依名稱批量處理


killall -9 nginx           # 殺死所有名為 nginx 的進程
pkill -u www-data -f php   # 殺死 www-data 用戶且命令列含 php 的進程
pkill -STOP -f "python.*worker"  # 暫停符合模式的進程

五、優先序調度:nice / renice

  • nice 值範圍:-20 (最高優先) ~ +19 (最低優先),預設 0。
  • nice -n -5 ./compute.sh:啟動時指定 nice -5 (較高優先),**需 root 權限才能負值**。
  • renice -n 10 -p 1234:調整已運行進程 nice 為 10 (降低優先)。
  • renice -n -5 -u www-data:調整該用戶所有進程。

六、前後台作業控制

操作指令/熱鍵說明
前台 → 後台暫停Ctrl+Z發送 SIGTSTP,進程停止並放入作業表
後台繼續運行bg %1 或 bg發送 SIGCONT,%1 為作業號 (jobs 顯示)
後台 → 前台fg %1喚回前台繼續互動
直接後台啟動cmd &不佔用終端,標準輸出仍導向終端
查看作業表jobs -l顯示作業號、PID、狀態、命令
殺死作業kill %1% 號不可省略,否則視為 PID

作業號 vs PID:作業號是 Shell 內部編號 (1,2,3...);PID 是核心全域唯一識別碼。kill 2 殺 PID=2,kill %2 殺作業 2。

七、vmstat:系統整體狀態快照


vmstat 1 5   # 每 1 秒採樣,共 5 次

關鍵欄位:r (可執行佇列長度)、b (不可中斷睡眠)、si/so (swap in/out)、us/sy/id/wa/st (CPU 細分)。

結語

進程管理工具鏈 ps → pgrep/pidof → top/htop → kill/renice → jobs/bg/fg 形成完整閉環:**觀察 → 定位 → 分析 → 控制 → 驗證**。熟練這套流程,配合 /proc/PID/ 虛擬檔案系統 (fd、maps、stack、environ、limits、cgroup) 深入剖析,即可從容應對生產環境 99% 的進程級故障與效能問題。

copyright © 萬盛學電腦網 all rights reserved