指南/Mac為什麼無法睡眠
Mac為什麼無法睡眠?如何找出是什麼讓它保持喚醒
簡短回答
打開「終端機」並執行pmset -g assertions。在「Listed by owning process」底下,每一行都列出一個正在阻止睡眠的App、持續多久,以及它給出的原因。活動監視器會在「能源」標籤頁的「防止睡眠」欄將同樣的App標為「是」。常見原因有:瀏覽器標籤頁中沒關掉的影片或通話、下載或備份、仍在執行的caffeinate指令,以及讓Mac接上電源時保持喚醒的設定。在MacBook上,Vitals系統監控工具不用「終端機」就能在「電池」標籤頁和選單列中列出這些App,並附上原因和持續時間。
如何找出是什麼讓Mac無法睡眠
- 01 打開「終端機」並執行
pmset -g | grep sleep。如果有東西在阻止睡眠,sleep那一行的結尾會有類似(sleep prevented by Google Chrome, powerd)的說明。 - 02 執行
pmset -g assertions查看詳細資訊。在「Listed by owning process」底下,每一行都列出App及其PID、它阻止睡眠多久了、阻止的類型,以及named一字後面它給出的原因,例如「Video Wake Lock」。 - 03 忽略powerd的「Prevent sleep while display is on」和UserIsActive這幾行。它們只表示你正在使用Mac,你停下來後就會消失。
- 04 打開活動監視器,按一下「能源」,查看「防止睡眠」欄。標為「是」的就是同樣的App,你可以直接從那裡結束它。
- 05 結束這個App,或關掉它正在做的事:播放影片的標籤頁、通話、下載。再執行一次
pmset -g assertions,確認那一行已經消失。
Mac能睡眠但一直醒來,是另一個問題,有它自己的記錄。請參閱下方的「Mac自己醒來時」。
只要沒有東西要求它別睡,Mac就會睡眠。App提出要求的方式是建立電源斷言:macOS會記錄這個請求,附上App的名稱和原因。影片播放器、通話、下載或備份提出要求都有正當理由。麻煩在於請求比理由留得更久:一個播放著靜音影片的標籤頁、一個在另一個標籤頁中早已結束的通話、一個你忘在終端機視窗裡的caffeinate。下表將你看到的現象對應到可能的原因和查看位置。
Mac為什麼一直保持喚醒
| 你注意到的現象 | 可能的原因 | 查看位置 |
|---|---|---|
| 螢幕一直不關 | 有App讓顯示器保持開啟:影片、通話、簡報 | pmset -g assertions: PreventUserIdleDisplaySleep |
| 螢幕關了,但Mac一直不睡眠 | 下載、備份、同步或建置讓系統保持喚醒 | pmset -g assertions: PreventUserIdleSystemSleep |
| 接上電源時從不睡眠 | 某個設定讓它在接上電源時保持喚醒 | 「系統設定」→「電池」→「選項」,桌上型Mac則在「能源」中 |
| 它睡眠後,半夜又自己醒來 | 排定的維護作業、網路或已連接的裝置 | pmset -g log和pmset -g sched |
| 執行某個「終端機」指令後一直保持喚醒 | caffeinate仍在執行 | 活動監視器:搜尋caffeinate |
| 其他裝置使用它的連線時一直保持喚醒 | 網際網路共享 | 「系統設定」→「一般」→「共享」 |
各種斷言類型的意義
pmset -g assertions中的每一行都會列出一種類型。其中三種會讓Mac保持喚醒。其餘的只是記錄用途,看到它們很正常。
- PreventUserIdleDisplaySleep或NoDisplaySleepAssertion:讓螢幕保持開啟,Mac也隨之保持喚醒。影片播放器、視訊通話和簡報會使用它。
- PreventUserIdleSystemSleep或NoIdleSleepAssertion:讓Mac保持喚醒,但螢幕可以關閉。下載、備份、播放音樂和建置會使用它。
- PreventSystemSleep:接上電源時即使闔上螢幕也讓Mac保持喚醒。很少見;通常是系統服務。
- UserIsActive、BackgroundTask和ApplePushServiceTask:只是記錄用途,本身不會阻止睡眠。
Mac自己醒來時
已經睡眠的Mac仍可能在螢幕關閉的情況下自己短暫醒來,去收郵件、同步、備份或執行維護作業。macOS稱之為暗喚醒(dark wake)。一個晚上幾次是正常的。幾十次,或螢幕亮起的完整喚醒,則表示是某個裝置或設定的問題。
- 執行
pmset -g log | grep -E "Wake from|DarkWake from" | tail -20查看最近20次喚醒。「due to」後面的文字說明了原因:lid表示你打開了螢幕、rtc/Maintenance是排定的維護喚醒,而USB、藍牙或網路裝置的名稱則指向那個裝置。 - 執行
pmset -g sched查看macOS排定稍後進行的喚醒,以及每次喚醒是系統的哪個部分要求的。 - 如果是某個裝置在喚醒Mac,過夜時拔掉它,看看喚醒是否停止。
- 如果原因是網路喚醒,將「網路存取時喚醒」設為「僅限使用電源轉換器時」或「永不」:MacBook在「系統設定」→「電池」→「選項」中,桌上型Mac在「系統設定」→「能源」中。
刻意讓Mac保持喚醒的設定
有些設定本來就是要讓Mac保持喚醒。在尋找行為異常的App之前,先檢查這些設定。
- 在MacBook上:「系統設定」→「電池」→「選項」中的「使用電源轉換器時,防止在顯示器關閉時自動進入睡眠」。
- 在桌上型Mac上:「系統設定」→「能源」中的「防止在顯示器關閉時自動進入睡眠」。
- 「系統設定」→「一般」→「共享」中的「網際網路共享」,其他裝置使用Mac的連線時,它會讓Mac保持喚醒。
- 在「系統設定」→「鎖定畫面」中將顯示器關閉時間設為「永不」,會讓螢幕一直開著,Mac也隨之保持喚醒。
caffeinate,以及應要求讓Mac保持喚醒的App
caffeinate是讓Mac在它執行期間一直保持喚醒的macOS指令。指令碼和開發者工具會用它,防睡眠的選單列App也會用它。它在pmset -g assertions中以自己的名稱顯示,在活動監視器中顯示為caffeinate。
如果是你啟動的,請在它的「終端機」視窗中按下Control-C。如果不是,找出是哪個App啟動的:在活動監視器中選擇「顯示方式」→「所有程序(依階層排列)」,在它的父程序底下找到caffeinate。結束父程序就能停止它。
Vitals多了什麼
在MacBook上,Vitals不用「終端機」,就能用白話指出是哪些App讓它保持喚醒。
- 「電池」標籤頁中的「讓此Mac保持喚醒」:每個App及其給出的原因(例如「正在播放影片」或「下載中」)、它阻止睡眠多久了,以及是否讓螢幕保持開啟
- 有App阻止睡眠時,選單列下拉式面板的「電池」區塊也會顯示同樣的列表,闔上螢幕前就能先檢查
- 瀏覽器無論有多少標籤頁在播放都只占一行,忘在終端機裡的
caffeinate會顯示為「要求保持喚醒」 - 沒有東西阻止時顯示「可以進入睡眠」
小提醒
- 這個列表只在MacBook上提供。在Mac mini、iMac、Mac Studio或Mac Pro上,請使用
pmset -g assertions。 - 它不包括macOS自己的程序,例如powerd、WindowServer以及「接力」期間的sharingd,它們每次只會短暫阻止睡眠。
pmset -g assertions會顯示全部。 - Vitals不會顯示喚醒歷史記錄。
pmset -g log可以。
大家常問的問題
是什麼讓我的Mac保持喚醒?
在「終端機」中執行pmset -g assertions。「Listed by owning process」底下的每一行都列出一個App、它阻止睡眠多久了以及原因。在活動監視器中,「能源」標籤頁的「防止睡眠」欄會將同樣的App顯示為「是」。
為什麼闔上螢幕後Mac不會睡眠?
使用電池時,不管App如何要求,闔上螢幕都會讓MacBook睡眠。接上電源、連接外接顯示器並闔上螢幕時,Mac會依設計繼續運作;Apple稱之為封閉顯示器模式。如果不是這些情況它仍保持喚醒,請在pmset -g assertions中尋找PreventSystemSleep。
Mac為什麼半夜自己醒來?
通常是為了維護作業、網路活動或已連接的裝置。執行pmset -g log | grep -E "Wake from|DarkWake from" | tail -20,看看「due to」後面的文字。如果原因是網路,請將「網路存取時喚醒」設為「僅限使用電源轉換器時」。
如何阻止App讓Mac保持喚醒?
關掉它正在做的事,例如影片、通話或下載,或結束這個App。如果是caffeinate,請在它的「終端機」視窗中按下Control-C,或結束啟動它的App。
Mac從不睡眠有害嗎?
它會耗電,而放在包包裡的MacBook還會積熱並耗光電池。當作伺服器使用的桌上型Mac則沒有害處,只要這正是你想要的。
有沒有能顯示是什麼讓Mac保持喚醒的App?
在MacBook上,Vitals會在「電池」標籤頁和選單列下拉式面板中列出讓它保持喚醒的App,附上每個App給出的原因、它阻止睡眠多久了,以及是否讓螢幕保持開啟。
詞彙表中的相關條目
更多指南
- Mac為什麼這麼慢
- 是什麼在消耗Mac的電池
- 哪個App在使用我的CPU或記憶體
- Chrome占用太多記憶體
- 為什麼Mac的風扇這麼吵
- 如何控制Mac的風扇轉速
- 如何釋放Mac的RAM
- Docker使用太多記憶體
- 如何停止Docker容器
- Mac音量混音器
- Cursor使用大量CPU
- Claude Code使用太多記憶體
- Claude Code和Codex的用量上限
- Claude App佔用大量CPU
- Codex佔用大量CPU
- Ollama佔用過多記憶體
- 活動監視器替代方案
- iStat Menus替代方案
- Stats替代方案
- Mac版工作管理員
- 最佳Mac系統監控工具
- 最佳Mac選單列監控工具
- 最佳Mac音量混音器
- Mac上的htop
- Mac版Process Explorer
- 最好的Mac溫度監控工具