掌握 Linux 前景/背景作業切換、暫停、恢復、查看與終止技巧,是系統管理與腳本開發的核心技能。本文系統整理 &、Ctrl+Z、jobs、fg、bg、kill、nohup 等關鍵指令與操作流程。
| 指令/按鍵 | 功能 | 典型使用場景 |
|---|---|---|
command & | 啟動命令並在背景執行 | 長時間運行的腳本、服務啟動 |
Ctrl+Z | 暫停前景作業並移至背景 (停止狀態) | 臨時中斷當前操作去處理其他事務 |
jobs / jobs -l | 列出當前 Shell 的背景作業 (含 PID) | 查看有哪些作業在背景運行/暫停 |
fg %n | 將第 n 號背景作業調回前景繼續執行 | 恢復需要互動的程式 |
bg %n | 將第 n 號暫停作業在背景恢復運行 | 讓被暫停的程式繼續跑 |
kill %n / kill PID | 依作業編號或進程 ID 終止進程 | 結束失控或不需要的程式 |
nohup command & | 免掛起執行,關閉終端機後仍持續運行 | 長時間部署、訓練模型、備份任務 |
# 每 10 秒在背景執行一次測試腳本
watch -n 10 sh test.sh &
# 查看背景作業
jobs -l
# 正在前景執行的程式按 Ctrl+Z 暫停
# 查看作業編號
jobs
# 在背景恢復運行
bg %1
# 將第 2 號作業調回前景
fg %2
# 方法一:透過 jobs 取得作業編號
jobs
kill %1
# 方法二:透過 ps 取得 PID
ps aux | grep test.sh
kill 12345
# 啟動免掛起進程
nohup sh test.sh &
# 關閉終端機後,在新終端機查看進程
ps aux | grep test.sh
# 終止進程
kill PID
Ctrl+C 發送 SIGINT 訊號kill 發送 SIGTERM (預設) 或 SIGKILL (kill -9)& 關閉終端機時進程會收到 SIGHUP 而終止;nohup 讓進程忽略 SIGHUP,實現真正的守護進程效果jobs 只能看當前 Shell 啟動的作業;跨終端機查看需用 ps 或 pgrep