Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 前景/背景程序切換實戰:&、jobs、fg、bg、nohup 與 disown 完整指南

編輯:關於 Linux

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

作業控制示意圖

基礎作業控制指令

command &jobs -lfg %nbg %nCtrl+Z
指令功能
啟動時直接放入背景執行
列出目前 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 (現代替代方案)

systemd-run --user --scope ./long_task.sh
# 以用戶級 systemd 服務運行,支援日誌查詢、自動重啟

善用作業控制與免掛起技巧,讓遠端維運不再受限於 SSH 連線存活時間。

Copyright © Windows教程網 All Rights Reserved