有時候 MacBook Pro 不能在工作跑到一半睡著,例如下載大檔案、備份、轉檔、編譯專案,或把電腦暫時當成測試伺服器。macOS 可以從系統設定調整,也能用內建的 caffeinate 指令暫時保持喚醒。
先釐清一件事:關閉顯示器和讓 Mac 進入睡眠是兩回事。比較實用的做法通常是讓螢幕照常關閉,但 Mac 在接上電源時繼續工作。這樣不用讓螢幕一直亮著,也能避免背景工作被中斷。
方法一:從系統設定調整
如果這台 MacBook Pro 經常要長時間執行工作,可以直接調整系統設定。
打開「系統設定」。
點選側邊欄的「電池」。
按一下「選項」。
開啟「在使用電源轉接器時,避免在顯示器關閉時自動進入睡眠」。
開啟後,只要 MacBook Pro 接著電源,即使顯示器因閒置而關閉,電腦仍會保持運作。
顯示器多久後關閉,可以到「系統設定」→「鎖定畫面」調整:
在使用電池且閒置時關閉顯示器
在使用電源轉接器且閒置時關閉顯示器
如果只是要讓背景工作繼續跑,不必把關閉顯示器的時間設成「永不」。讓螢幕先關閉、電腦繼續運作,通常比較省電。
不同 macOS 版本和機型顯示的選項可能稍有不同。Apple 的設定說明可參考:設定 Mac 的睡眠和喚醒設定。
方法二:用 caffeinate 暫時防止休眠
如果只是偶爾下載檔案或跑一次長時間工作,沒必要永久修改系統設定。macOS 內建的 caffeinate 很適合這種情況。
打開「終端機」,執行:
caffeinate
只要這個指令還在執行,Mac 就不會因閒置而睡眠。工作完成後,在終端機按 Control + C 即可停止。
設定保持喚醒的時間
-t 後面接秒數。例如,兩小時是 7,200 秒:
caffeinate -t 7200
時間到了之後,caffeinate 會自動結束,Mac 恢復原本的睡眠設定,不用記得手動關閉。
讓 Mac 跟著某個指令保持喚醒
也可以把要執行的指令接在 caffeinate 後面。以下用備份腳本當例子:
caffeinate ./backup.sh
backup.sh 執行期間,Mac 會保持喚醒;腳本結束後,防止休眠的效果也會一起解除。這比猜工作會跑多久更可靠。
如果是編譯專案,也可以這樣用:
caffeinate make
只阻止整台 Mac 睡眠
執行 caffeinate 時不加參數,預設會建立閒置睡眠的防止要求。若想明確表示「螢幕可以關閉,但系統不要因閒置而睡眠」,可以使用 -i:
caffeinate -i
若連顯示器也不能關閉,例如現場展示或監看儀表板,可以加上 -d:
caffeinate -di
這會讓螢幕持續亮著,耗電也會增加。一般下載、備份或轉檔只用 -i 就夠了。
查看目前是什麼在阻止休眠
有時候 Mac 明明沒有執行 caffeinate,卻還是不會睡眠。可以用 pmset 查看目前的電源管理要求:
pmset -g assertions
輸出內容通常會看到這幾類資訊:
PreventUserIdleSystemSleep:防止系統因使用者閒置而睡眠PreventUserIdleDisplaySleep:防止顯示器因閒置而關閉PreventSystemSleep:防止整個系統進入睡眠
往下看程序清單,通常能找到是哪個 App 或背景程序提出要求。影片播放、螢幕分享、備份工具和 caffeinate 都可能出現在這裡。
要確認目前的電源設定,也可以執行:
pmset -g custom
這個指令只會顯示設定,不會修改系統。
闔上上蓋還是會睡眠
前面的設定主要處理「閒置後自動睡眠」。MacBook Pro 闔上上蓋時,系統通常仍會進入睡眠,這是另一套行為。
如果要闔蓋使用,Apple 支援的做法是進入闔蓋模式:接上電源、外接顯示器,以及外接鍵盤和滑鼠或觸控式軌跡板。只想讓下載或腳本繼續跑,最省事的方式仍是把上蓋打開,讓顯示器自行關閉。
不建議為了闔蓋持續運作而使用來路不明的工具強制改寫電源行為。筆電在背包或不通風的空間裡持續執行工作,可能累積熱量,也會快速消耗電池。
我會怎麼設定
如果 MacBook Pro 長時間放在桌上、接著電源工作,我會開啟「在使用電源轉接器時,避免在顯示器關閉時自動進入睡眠」,並保留顯示器自動關閉。
如果只是偶爾跑一次長任務,我會用:
caffeinate -i 要執行的指令
這樣工作結束後就會恢復原本的省電行為,不會過了幾天才發現 Mac 一直沒有睡眠。使用電池時則盡量不要長時間停用睡眠,否則隔天很可能只剩一台沒電的 MacBook Pro。