終端機關閉預設會發送 SIGHUP 終止子程序。掌握前景/背景切換、免掛起執行、作業控制指令,可讓長時間任務在斷開 SSH 後持續運行。本文系統整理 &、jobs、fg、bg、nohup、disown 實戰用法。

| 指令 | 功能 |
|---|---|
| 啟動時直接放入背景執行 | |
| 列出目前 Shell 的背景作業 (含 PID) | |
| 將第 n 個背景作業調回前景 | |
| 將暫停的作業在背景繼續執行 | |
| 暫停前景程序 (發送 SIGTSTP) |
# 1. 啟動長時間任務
./long_task.sh
# 2. Ctrl+Z 暫停
^Z
[1]+ Stopped ./long_task.sh
# 3. bg %1 讓它在背景繼續
bg %1
[1]+ ./long_task.sh &
# 4. disown -h %1 從 Shell 作業表移除,不再接收 SIGHUP
disown -h %1
# 5. 關閉終端機,任務持續運行
nohup ./long_task.sh > output.log 2>&1 &
# 或
setsid ./long_task.sh > output.log 2>&1 < /dev/null &
nohup:忽略 SIGHUP,標準輸出導向 nohup.out。setsid:建立新會話,完全脫離控制終端機。systemd-run --user --scope ./long_task.sh
# 以用戶級 systemd 服務運行,支援日誌查詢、自動重啟
善用作業控制與免掛起技巧,讓遠端維運不再受限於 SSH 連線存活時間。
Debian Wheezy (Debian 7) 桌面優化完整指南:觸控板、小紅點、啟動音、快捷鍵與常用軟體
Linux userdel 刪除使用者失敗?改用 vipw 直接編輯帳號檔案
Oracle Linux 5 遠端 Telnet 出現 Unencrypted connection 拒絕連線解決法
Linux 編譯安裝 Boost C++ 庫:啟用 MPI 支援、自訂安裝路徑與常見錯誤排解
VirtualBox 安裝 Ubuntu 後滑鼠無法自動釋放、剪貼板無法共享?安裝 Guest Additions 完整解決