SSH 的預設連接埠是 22,但連線成功與否,不代表其中的科研任務仍在執行;OpenBSD SSH 手冊列有這項預設值。SSH 斷線後,普通前景命令不能保證繼續運行。需要讓終端工作階段在客戶端斷線後仍可接回,應在遠端 Mac 上用 tmux,並先驗證重新連線和結果檔案;它不能防止主機重啟、服務終止或程序崩潰。

本文適合透過 SSH 在遠端 Mac 執行腳本、編譯或命令列分析的研究生與科研開發者。
常遇到不穩定網路的研究人員,可依照文中的檢查流程判斷任務狀態。
負責遠端科研環境交付的課題組技術人員,可用驗收步驟確認任務是否能復查。

先分清連線中斷、終端結束與主機故障

SSH 是用來連線至遠端系統的工具;在 macOS 啟用「遠端登入」後,可使用 SSH 或 SFTP 登入,相關設定方式見 Apple 的遠端登入說明。但「SSH 連線斷了」只描述本機與遠端之間的連線,不足以判定遠端命令的狀態。

觀察到的狀況 可能的任務狀態 低風險的下一步
SSH 視窗突然關閉,沒有事先使用 tmux 前景命令可能隨原終端工作階段結束,也可能仍有程序運行;不能只憑斷線判斷 重新登入後檢查程序、日誌和輸出檔
SSH 斷線前,命令已在 tmux 工作階段中執行 客戶端連線中斷時,tmux 工作階段可能仍可接回 確認帳戶與主機一致,再列出並接回工作階段
重新登入後,找不到原工作階段 可能登入錯誤主機或帳戶,也可能是工作階段或程序已結束 先保存現有日誌和檔案,釐清狀態後再決定是否重跑
macOS 主機重新啟動或程序崩潰 tmux 不保證恢復主機或程序狀態 查明主機政策、程序錯誤和應用程式復原能力

前景命令與目前終端工作階段相連;重連時開啟的新 shell 並非舊終端的延續。因此,重新登入成功只能證明目前可連線,不能證明上一個計算完整結束。

作業方式 SSH 客戶端斷線後的預期 適用範圍與限制
直接在 SSH 前景終端執行命令 不應預設命令會繼續 適合可立即完成、可安全重試的工作
在 tmux 工作階段內執行命令 可脫離及重新接回工作階段 適合終端程式;不涵蓋主機重啟或程序故障
使用 nohup 啟動命令 可忽略掛斷訊號,但不等於可接回互動終端 GNU Coreutils 文件說明其掛斷處理方式;macOS 上的行為與輸出安排須先實測
操作圖形介面的科研軟體 tmux 不負責保存圖形工作狀態 依賴軟體本身的自動儲存、檢查點或復原功能

GNU 的 nohup 說明針對忽略掛斷訊號作出解釋;這與 tmux 的工作階段脫離、重新接回不是同一件事。若工作需要查看進度或接回終端,應先確認使用方式符合任務需求,不要把 nohup 當成 tmux 的等效替代品。

在重跑之前先核對證據

重新連線後,先記錄登入帳戶與主機,再查看預期的工作目錄、日誌和輸出檔。若日誌仍在更新,或相關程序仍存在,就不要急著啟動第二份計算;重複執行可能覆寫檔案、佔用資源,亦可能讓後續難以分辨哪份結果對應哪次執行。

讀取結果時,請核對預期輸出是否存在、檔案能否正常開啟,以及日誌是否顯示任務已結束或發生錯誤。檔案存在不等於內容完整;若沒有明確結束記錄,就先保存現場,再決定是否使用檢查點續跑或重新執行。

用 tmux 保留並接回終端工作階段

tmux 的工作階段與 SSH 客戶端分開管理:客戶端離線後,仍可嘗試重新登入並接回原工作階段。官方 tmux 入門文件說明如何建立、脫離與重新接回工作階段;tmux 手冊則記載相關命令。

操作目的 命令 用途
建立具名工作階段 tmux new -s analysis 開啟名為 analysis 的工作階段
脫離但保留工作階段 Ctrl-b,再按 d 回到原 SSH shell,不結束 tmux 工作階段
列出工作階段 tmux ls 查看目前帳戶可見的工作階段
接回指定工作階段 tmux attach -t analysis 重新進入名為 analysis 的工作階段

可按以下步驟準備科研長任務:

  1. 確認目前登入的是正確的遠端 Mac、帳戶與專案目錄;先確認腳本會把日誌和結果寫到可預期的位置。
  2. 執行 tmux new -s analysis 建立具名工作階段。名稱應能分辨用途,避免把多個無關任務混在同一個會話中。
  3. 在 tmux 內啟動腳本,並確認日誌開始產生、命令輸出符合預期。若程式支援檢查點或斷點續跑,先確認其儲存位置和讀取方式。
  4. 按 Ctrl-b,再按 d,主動脫離工作階段。這樣能先確認脫離操作有效,而不是等到網路突然中斷才發現沒有準備。
  5. 再次 SSH 登入,執行 tmux ls 查看工作階段,並以 tmux attach -t analysis 接回;確認畫面中的命令、日誌與程序狀態。
  6. 工作結束後,先確認日誌記錄與結果檔完整,再依任務需要正常結束命令與 tmux 工作階段。

提醒:tmux 保留的是終端工作階段,不是已完成的科研結果備份。若主機重啟、執行環境被終止,或程序本身崩潰,仍要依靠日誌、應用程式檢查點及可重新執行的流程復原。主機維護與資料保留方式須以實際環境規則為準。

按症狀排查原工作階段與結果

如果 tmux ls 沒有顯示預期工作階段,先不要立即重跑。tmux 官方 常見問題可用來查閱工作階段相關疑難;實際排查可按下列順序進行:

發現的現象 優先核對 建議處理
找不到工作階段 登入帳戶、主機、環境變數與工作目錄是否正確 修正連線目標後再查一次
工作階段存在,但命令已返回提示符 結束訊息、退出狀態、日誌末段和輸出檔 判斷是完成還是錯誤結束,保留相關證據
日誌停止更新,工作階段仍在 程序是否仍存在、是否等待互動輸入或遇到錯誤 先查看畫面與日誌,不要直接關閉程序
結果檔存在但內容不完整 檔案格式、大小變化、程式是否曾寫入完成標記 暫停發布或分析該結果,先保存副本並查明原因

有工作階段但沒有新輸出,不一定代表程序已崩潰;命令可能正在等待輸入,或程式把輸出緩衝到其他位置。反過來,日誌最後一行看似正常,也不能單獨證明所有輸出已寫入。應把程序狀態、日誌和結果檔放在一起判讀;若仍無法確定,保留目錄與錯誤訊息後再評估重跑。

以低風險測試驗收斷線恢復

在交付科研長任務前,先用不會覆寫正式資料的測試工作確認整個流程。不要拿唯一一份重要結果來驗證斷線保護,也不要只看能否重新登入就放行。

  1. 在測試目錄建立可辨識的日誌與輸出位置,確認不會碰到正式資料。
  2. 於 tmux 工作階段內執行一項能持續顯示進度、並產生可檢查輸出的測試命令。
  3. 主動脫離 tmux,再關閉 SSH 連線;重新登入後列出工作階段並接回。
  4. 核對程序或工作階段狀態、日誌內容,以及測試輸出能否正常讀取。
  5. 依照測試結果記錄適用條件與失敗時的處理方式;若無法證明輸出完整,先停止正式長任務,改善日誌或檢查點後再測。

判斷是否可放行長任務,可使用以下條件分支:

  • 若工作可在終端內執行,而且測試證明 SSH 中斷後能接回 tmux、檢查日誌並確認輸出,則可採用 tmux 執行,並保留獨立的結果備份或檢查點。
  • 若工作依賴互動桌面、視窗狀態或滑鼠操作,則不要把 tmux 當作保活方案;先確認軟體的自動儲存和復原方式,並以代表性工作測試。
  • 若主機維護、重啟或資源管理規則不明,則先向環境管理者確認,不要假設 tmux 能跨越主機故障。
  • 若重連後無法確認舊任務狀態,則先保存日誌、錯誤訊息和輸出,再決定是否重跑,避免覆寫或重複計算。

把 tmux 的保護範圍與圖形任務分開

tmux 適合在終端中執行的腳本、編譯和命令列分析;它不會替需要桌面畫面的科研軟體保持視窗互動,也不會自行替應用程式儲存未寫入的資料。Apple 的服務管理文件涵蓋 macOS 服務管理,但不能據此推定某個遠端主機的維護安排、程序保留或資料政策。

對 GUI 工作,應先確認軟體本身是否提供自動儲存、檢查點或可重新開啟的專案檔,再用一份可丟棄的測試資料驗證復原流程。若任務需要持續的圖形介面操作,tmux 只能管理終端命令,不能代替圖形工作階段的狀態保存。

因此,長任務的放行條件不是「SSH 又連上了」,而是能接回適用的工作階段、找到可用的執行證據,並確認結果檔可讀且完整。任一項無法確認,都應先停下來補足日誌或復原方案。

若目前依賴實驗室共用設備或個人電腦,常見限制包括設備無法預約到需要的時段、個人 Mac 購置成本一次支出,以及連線與資料交接要自行維護;但若工作長期持續、高負載,或必須接實體儀器與周邊,租用遠端 Mac 未必合適。若科研腳本確實需要 macOS,可先透過 RUVCLOUD 的遠端 Mac 服務資訊了解可用的使用方式,再用代表性任務驗證 SSH 重連、結果檢查與檔案匯出,依實際使用週期評估是否租用。您也可查看 RUVCLOUD 的方案與計費資訊,並在選用前確認自己的任務類型和環境需求;無法通過復原驗收的工作,應先改善流程,而不是單靠租用或 tmux 假設結果一定保留。