身為 Linux 系統管理員,理解進程間的層級關係——父子進程、進程組、會話、前後台工作——是訊號處理、作業控制與服務管理的基石。本文以 ps 實戰輸出為例,圖文並茂拆解核心概念。
init (PID 1) 或 systemd。fork() + exec() 建立父子關係,形成進程樹。$ ps -o pid,pgid,ppid,comm
PID PGID PPID COMMAND
17763 17763 17751 bash
18534 18534 17763 ps
18535 18534 17763 cat
bash 為組長,ps 與 cat 同屬 PGID 17763。此時對 PGID 發送訊號(如 kill -TERM -17763)將影響組內所有進程。
SIGTTIN 暫停。# 後台執行
$ ping localhost > log &
[1] 10141 # [1] = 工作號, 10141 = PGID
# 查看詳細資訊
$ ps -o pid,pgid,ppid,sid,tty,comm
# 發送訊號給工作
$ kill -TERM %1 # 以工作號
$ kill -TERM -10141 # 以 PGID (前加負號)
# 切換前後台
$ fg %1 # 後台 → 前台
$ bg %1 # 暫停 → 後台繼續
$ Ctrl+Z # 前台 → 暫停
Ctrl+C → SIGINT、Ctrl+\ → SIGQUIT、Ctrl+Z → SIGTSTP)僅傳遞給前台進程組。Ctrl+C 中斷的原因。每開啟一個終端視窗/SSH 連線,即建立一個獨立會話,擁有各自的前台/後台工作。圖形介面雖已取代文字模式多工,但會話機制仍廣泛應用於 systemd、tmux、screen、容器運行時等底層架構。
| 概念 | 關鍵 ID | 常用指令/符號 |
|---|---|---|
| 進程組 | PGID | kill -PGID, setpgid() |
| 會話 | SID | setsid(), getsid() |
| 工作 | Job Number [%n] | jobs, fg %n, bg %n, kill %n |
| 前台/後台 | — | &, Ctrl+Z, stty tostop |

VMware Workstation 開啟巢狀虛擬化:解決 Client OS 無法安裝 64-bit CentOS (缺少 VMX/SVM) 問題
Linux 掛載 NTFS 格式 USB 隨身碟提示 unknown filesystem 解決方案
CentOS 6.5 安裝 Docker 完整實戰:從內核升級到鏡像拉取
Linux 限制 su - 切換 root 權限:wheel 群組與 PAM 實戰完整指南
解決 VPN 連接 Linux 服務器速度變慢的 MTU 優化方案
VMware 克隆 Linux 後 eth0 消失解決方案:70-persistent-net.rules 與網卡配置同步修復