2026年租用 Mac Mini 長期任務進程守護選型:
launchd 與 pm2 對比及保活清單
2026年3月25日
RunMini 技術團隊
閱讀約 7 分鐘
七乘二十四與獨立開發者在租用 Mac Mini上常於launchd與pm2間抉擇。本文以決策矩陣對照場景、日誌、崩潰重啟與資源占用,並列 plist 欄位、pm2 開機與日誌輪轉清單。內文另連結首頁、購買、幫助、長期託管 FAQ、保活實戰。
痛點:① 重啟後服務未起。② 日誌分流不清致磁碟滿。③ 退出碼誤判致重啟風暴或不再拉起。
① 選型決策矩陣
聚焦進程守護;健康檢查與 Webhook 可併用站內 OpenClaw 守護文。
| 維度 | launchd | pm2 |
|---|---|---|
| 適用場景 | 系統守護、任意執行檔、與開機及背景工作階段整合 | Node 為主、多應用叢集、零停機 reload、ecosystem 統管 |
| 日誌 | 標準輸出錯誤分流檔案,可交系統輪替 | 內建 logs、常配 pm2-logrotate |
| 崩潰重啟 | KeepAlive、SuccessfulExit、ThrottleInterval 節流 | autorestart、max_restarts、min_uptime、exp_backoff |
| 資源占用 | 無額外中介層,開銷低 | 守護與模組佔記憶體與 CPU,宜設記憶體上限重啟 |
② launchd plist 關鍵欄位清單
置於 LaunchAgents 或 LaunchDaemons 後以 launchctl 載入。可引用:節流十秒以上抑風暴;SuccessfulExit 設 false時零碼仍可再監控(視工作調整)。
- Label:唯一名,呼應檔名。
- ProgramArguments:執行檔與參數。
- RunAtLoad:載入即跑與否。
- KeepAlive:布林或細項字典。
- ThrottleInterval:兩次啟動最短秒數。
- StandardOutPath/StandardErrorPath:日誌路徑。
- WorkingDirectory、EnvironmentVariables:脈絡。
- UserName、LimitLoadToSessionType、ProcessType:依帳號與是否需 GUI 選用。
- 專用帳號與目錄隔離日誌與工作區。
- ProgramArguments 寫全路徑,勿依賴互動 shell。
- 先設 stderr 檔排查啟動失敗。
- 對齊 KeepAlive 與預期退出語意。
- launchctl print 驗證後做重開機復測。
③ pm2 配置與開機
Mac Mini 上常用 pm2 startup 產生開機項再 pm2 save。可引用:min_uptime 四千毫秒以上抑抖動;max_restarts 十至五十次量級視容忍度。
- ecosystem 宣告名稱、script、instances、exec_mode。
- autorestart 並設 min_uptime、max_restarts、exp_backoff。
- 按需 max_memory_restart、node_args 限堆積。
- 依 startup 提示完成使用者層載入。
- 重開後 pm2 status 與日誌對 SLA。
④ 資源與日誌輪轉
租用節點磁碟與 IOPS 皆成本:日誌上限與保留天數應寫死於配置。可引用:單檔逾五十至二百 MB應輪替;保留三至二十份視稽核。
- launchd:檔案日誌配 newsyslog 或 logrotate,留意併寫截斷。
- pm2:pm2-logrotate 設 max_size、retain、compress。
- 應用內分級 error/warn,勿長開全量 debug。
- 活動監視器或 pm2 monit 對照曲線校準記憶體上限。
⑤ FAQ
能否同時用 launchd 與 pm2?
可,勿重複守護同一行程;常見為 launchd 只拉起 pm2,或非 Node Worker 單獨 plist。
為何行程常靜默掛掉?
SuccessfulExit 或退出碼語意不符,或 OOM 被系統殺;請對照系統日誌與 stderr。
租用環境還須注意?
確認是否允許長駐 Daemon、SSH 斷線與 Session 類型影響,並寫入 Runbook。