程式開發代理執行時,如何讓 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. 任務結束後把設定改回來
- 按 Control-C 停止
caffeinate,或等它的時間結束。 - 關閉你開啟過的任何 Mac 睡眠選項。
- 在 Windows 上,恢復你記下的睡眠時間(den-pc 為 30 分鐘)。
接著確認沒有東西仍在讓電腦保持喚醒。在 Mac 上,於「終端機」執行 pmset -g assertions,查看「Listed by owning process」底下的項目。caffeinate 不應該出現在那裡,不過音訊或系統項目是正常的。在 Windows 上,在以系統管理員身分開啟的終端機中執行 powercfg /requests。它會列出讓顯示器保持開啟或讓電腦保持喚醒的 App 與驅動程式。
