Mono
候補名單

程式開發代理執行時,如何讓 Mac 或 Windows 電腦不進入睡眠

用 caffeinate 或睡眠設定,讓 Mac 或 Windows 電腦在程式開發代理執行長時間任務時不進入睡眠,結束後再把設定改回來。

要讓 Mac 在程式開發代理執行時保持喚醒,開啟「終端機」,執行 caffeinate -i,並讓視窗一直開著,直到任務結束。在 Windows 11 上,到「設定」把插電時的睡眠時間改為「永不」,事後再改回來。筆電要接上電源轉接器,並保持上蓋打開。

本文涵蓋 macOS 和 Windows 11,但不涵蓋闔上上蓋後讓筆電繼續運作的做法。Reunified 的 Mono 可以在代理工作時讓 Mac 保持喚醒,但以下步驟適用於任何代理。

1. 了解睡眠對代理工作階段的影響

睡眠會暫停所有程式(包括代理),並中斷網路連線。工作階段不一定能順利恢復。

  • 顯示器睡眠只會關閉螢幕,程式仍會繼續執行。
  • 閒置睡眠會在一段時間沒有輸入後讓電腦停止運作。忙碌中的代理不算是輸入。
  • 闔上筆電上蓋通常會讓它進入睡眠,不論閒置設定為何。
  • 關機或重新開機會結束工作階段。

不要指望用手機喚醒已經睡眠或關機的電腦。

虛構範例:午餐前,你讓代理在「tidy-recipes」專案中升級相依套件並執行測試。這在接上電源的 MacBook Air 上大約需要 40 分鐘。

2. 用 caffeinate 讓 Mac 在單一任務期間保持喚醒

caffeinate 是 macOS 內建的工具。加上 -i 時,它會在執行期間防止閒置睡眠。它停止後,你平常的設定就會恢復生效。

指令 效果
caffeinate -i 保持喚醒,直到你按 Control-C 停止它
caffeinate -i <command> 執行該指令,在指令結束前保持喚醒
caffeinate -i -t 3600 保持喚醒 3,600 秒(一小時)
caffeinate -i -w <pid> 保持喚醒,直到該程序結束
caffeinate -d 讓顯示器保持開啟

tidy-recipes 的代理在桌面 App 中執行,所以你無法透過 caffeinate 啟動它。你改為執行 caffeinate -i -t 3600,用一小時涵蓋 40 分鐘的工作,並讓那個「終端機」視窗開著。「活動監視器」的 PID 欄位會顯示 -w 需要的 ID,man caffeinate 則列出所有選項。

3. 為較長的工作階段修改 Mac 睡眠設定

如果代理一次要執行好幾個小時,或每天都要執行,就改成調整系統設定。Apple 的睡眠與喚醒設定指南說明了設定的位置:

  • 筆電:「系統設定」>「電池」>「選項」,開啟「在使用電源轉接器時,避免在顯示器關閉時自動進入睡眠」。
  • 桌上型電腦:「系統設定」>「能源」,開啟「避免在顯示器關閉時自動進入睡眠」。

Apple 提醒,防止睡眠可能會增加電力消耗。「進行網路連線時喚醒電腦」只會讓 Mac 為了共享服務短暫喚醒,不會讓代理持續執行。

在 Mac 上的 Mono 中,「設定」>「Code」有「代理程式運作時不進入睡眠」選項,預設為開啟。它會延後閒置睡眠,直到代理完成這一輪工作。闔上上蓋仍會讓 Mac 進入睡眠。「鎖定時繼續執行」預設也是開啟的,讓開啟中的工作階段在螢幕鎖定時繼續執行。Mono 在 Windows 上沒有睡眠設定。

4. 讓 Windows 電腦保持喚醒

在 Windows 11 中,依照 Microsoft 的電源設定指南,開啟「開始」>「設定」>「系統」>「電源 & 電池」>「螢幕、睡眠 & 休眠逾時」。在桌上型電腦上,這個頁面可能叫做「電源」(Power)。

在「在下列時間後讓我的裝置進入睡眠」下,記下插電時的數值,然後改為「永不」,或設成遠超過任務長度的時間。

隔天,你在「den-pc」上執行一個類似的 40 分鐘任務。這是一台閒置 30 分鐘就會睡眠的 Windows 桌上型電腦。30 分鐘比任務時間短,所以你記下 30 分鐘,然後選擇「永不」。

之後如果要從終端機把計時器改回來,powercfg 的數值以分鐘為單位:powercfg /change standby-timeout-ac 30。

5. 準備好要放著執行的長時間任務

離開前先填好這張表。

檢查項目 MacBook Air den-pc(Windows)
電源與上蓋 接上轉接器,上蓋打開 桌上型電腦,已插電
保持喚醒的方式 caffeinate -i -t 3600 睡眠設為「永不」
要還原的數值 無 30 分鐘
已安裝更新,沒有等待中的重新開機 是 是
代理執行中、提醒已測試、手機已充電 是 是

留意代理的第一個步驟,以免它卡在登入提示或缺少的工具上。設定程式開發代理通知,讓它在完成或需要核准時提醒你,並參考遠端程式設計指南,從手機追蹤進度。

6. 任務結束後把設定改回來

  1. 按 Control-C 停止 caffeinate,或等它的時間結束。
  2. 關閉你開啟過的任何 Mac 睡眠選項。
  3. 在 Windows 上,恢復你記下的睡眠時間(den-pc 為 30 分鐘)。

接著確認沒有東西仍在讓電腦保持喚醒。在 Mac 上,於「終端機」執行 pmset -g assertions,查看「Listed by owning process」底下的項目。caffeinate 不應該出現在那裡,不過音訊或系統項目是正常的。在 Windows 上,在以系統管理員身分開啟的終端機中執行 powercfg /requests。它會列出讓顯示器保持開啟或讓電腦保持喚醒的 App 與驅動程式。

最後,在提交任何內容之前,先審查代理的變更。Mono 還沒有正式推出,但你可以加入候補名單。

作者

Reunified 打造能把分散的東西重新聚在一起的 App。

繼續閱讀

所有文章

即將推出

加入候補名單

留下你的電子郵件地址,Mono 可以下載時我們會通知你。

你會在哪裡使用 Mono?