教學

SSH 斷線後讓程序繼續執行(tmux、nohup)

關閉 SSH 會用 SIGHUP 殺掉你跑的命令。把它跑在 tmux 或 screen 裡以保活並稍後重新掛上,或用 nohup 啟動後不管。為什麼這在行動端(連線會斷)加倍重要。

CC Chen Chen· 創始人·2026 年 6 月 24 日·閱讀 5 分鐘

斷線後讓程序繼續執行

預設情況下,關閉 SSH 工作階段會殺掉你在裡面啟動的東西。要讓命令在你斷線後繼續執行,把它啟動在一個終端機多工器裡——tmux(或 screen),這是最好、最靈活的選項。一次性的話 nohup … & 也行。在行動端這一點加倍重要:切換網路或 App 退到背景時連線會斷,分離與否就是「丟任務」和「不丟」的區別。

為什麼會死

你的 SSH 工作階段結束時,shell 給它的子程序發 SIGHUP(「掛斷」),多數就退出了。修法是把程序跑在一個能挺過工作階段的地方——一個分離的 tmux/screen 工作階段,或一個被明確告知忽略掛斷的程序。

最好的辦法:tmux

tmux 讓一個 shell 在伺服器上獨立於你的連線存活。啟動它、跑你的活、分離、斷線——活繼續。稍後你正好從離開處重新掛上。

tmux                      # 启动一个会话
# … 跑你的长命令 …
# 分离:按 Ctrl-b 再按 d
# 现在可以安全断开

# 稍后重连后:
tmux attach               # 正好回到你离开处

有多個工作階段:tmux ls 列出,tmux attach -t 0 選一個。screen 是更老的等價物(screen,分離 Ctrl-a d,重掛 screen -r)——裝了哪個用哪個。

快速的辦法:nohup

對一條你只想啟動後離開的命令:

nohup ./long_job.sh > job.log 2>&1 &

nohup 讓程序忽略掛斷,& 放背景,重新導向把輸出存到檔案(因為沒有終端機可列印)。稍後用 tail -f job.log 看進度。已經啟動了才想起來?disown -h %1 把最近的背景任務從 shell 分離,讓它存活。

該用哪個?

你想…
回來還要和工作階段互動tmux / screen
啟動後不管,稍後看記錄檔nohup … &
保住一個已啟動的任務disown

為什麼這在行動端必不可少

在手機上,連線天生脆弱:你走出 Wi-Fi 範圍、切到行動網路、或長等待時 OS 掛起 App——普通 SSH 工作階段(和它跑的命令)就死了,常帶一個 broken pipe。跑在 tmux 裡就讓掉線成了無關緊要的小事:活在伺服器上繼續跑,你重連後 tmux attach 重新掛上。再配一個穩定位址(Tailscale),重連就是一點。這是讓手機管理可靠的習慣。

TermAI 在手機上建議一條 tmux 命令
在手機上,把長任務跑在 tmux 裡意味著掉線不殺任務——重連後重新掛上。不確定命令時 AI 能替你配好。

常見問題

怎麼在關閉 SSH 後讓程序繼續執行?
把它啟動在 tmux(或 screen)裡,Ctrl-b 再 d 分離,然後斷線——程序繼續跑。稍後 tmux attach 重新掛上。一次性的用 nohup command &

tmux 和 nohup 有什麼區別?
tmux 讓一個可重新掛上的互動工作階段存活;nohup 只是啟動一條忽略掛斷、背景執行的命令。想回到工作階段就用 tmux。

已經啟動了一條命令,能保住嗎?
能:disown -h %1 把一個執行中的背景任務分離、讓它挺過工作階段。(它得已經在背景——用 Ctrl-z 再 bg,或以 & 啟動。)

為什麼行動端 SSH 一斷我的任務就死?
斷開的工作階段給程序發 SIGHUP。跑在 tmux 裡讓它們獨立於連線——在掉線常見的行動端必不可少。

快速事實

  • 為何會死:關閉 SSH 給子程序發 SIGHUP
  • 最好:跑在 tmux 裡——分離(Ctrl-b d)、斷線、稍後 tmux attach
  • 快速:nohup command > log 2>&1 & 啟動後不管
  • 已在跑:disown -h %1 保住它
  • 行動端:tmux 把掉線變成無關緊要的小事
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog