Mac 不睡眠怎麼辦,怎麼查是誰在阻止
Mac 不睡眠的時候,一行指令通常就能找出原因。在終端機執行 pmset -g assertions,找出帶有 PreventUserIdleSystemSleep 或 PreventSystemSleep 的那幾行:每一行都會指出是哪個程序讓 Mac 保持清醒。大多數時候是正在播放媒體的 App、遠端存取工具、防止睡眠的工具或下載。把那一個東西結束,Mac 就會自己睡著了。
找出是什麼讓它不睡
先給最快的答案。這行會告訴你有哪些程序在阻止睡眠:
pmset -g | grep -E '^ *sleep'
例如這台 Mac 印出的是 sleep 1 (sleep prevented by caffeinate, powerd, Amphetamine, ...)。想看細節,包括每一個已經撐了多久:
pmset -g assertions
同一台 Mac 上的真實一行:
pid 1321(UURemote): 36:07:42 PreventUserIdleSystemSleep named: "UURemote Disable Idle System Sleep"
手冊頁(man pmset)說 assertion "may prevent system sleep or display sleep",也就是可能阻止系統睡眠或顯示器睡眠。要看的是這幾種:
| Assertion | 它阻止什麼 | 通常是誰持有 |
|---|---|---|
PreventUserIdleSystemSleep |
Mac 閒置時進入睡眠 | 播放媒體、下載、遠端存取、防止睡眠的工具 |
PreventUserIdleDisplaySleep |
顯示器閒置時關閉 | 影片、簡報、防止睡眠的工具 |
PreventSystemSleep |
範圍更廣的睡眠 | 系統工作,或要求它的工具 |
UserIsActive |
閒置計時器,維持一小段時間 | 你剛碰過鍵盤或觸控式軌跡板 |
這些大多只是閒置時的阻擋,所以從蘋果選單選擇 睡眠,通常還是能睡。如果不行,請繼續往下看。
逐一檢查常見原因
| 程序或跡象 | 原因 | 怎麼辦 |
|---|---|---|
coreaudiod |
有音訊被打開,有時是暫停中的分頁 | 關掉那個分頁或播放器 |
| 瀏覽器或影片 App | 正在播放影片 | 停止播放或關掉頁面 |
caffeinate、Amphetamine 之類 |
它們的用途就是讓 Mac 保持清醒 | 結束它們,或結束那次工作階段 |
| UU Remote、螢幕共享或其他遠端工具 | 它們讓 Mac 保持可連線 | 中斷連線或結束它們 |
備份和同步 App、bird |
有工作正在執行 | 等它做完,或先暫停 |
powerd |
它自己的紀錄,常見於顯示器開著的時候 | 先看其他幾行 |
pmset -g 裡的 SleepDisabled 1 |
整台 Mac 的睡眠都被關掉了 | 見下面 |
設定也有影響。打開 系統設定 › 電池 › 選項,檢查 在使用電源轉接器時,避免在顯示器關閉時自動進入睡眠。同一頁的 進行網路連線時喚醒電腦 決定 Mac 會不會為了提供共享資源而醒來。如果 Mac 在你讓它睡著後很快又醒來,配件是常見的嫌疑,拔掉 USB 裝置和集線器再測一次。
睡眠被整個關掉的時候
pmset -g 會列出一行 SleepDisabled。它是 1 的時候,Mac 就不會睡,不管是從選單,還是闔上螢幕。防止睡眠的工具為了在闔上螢幕時保持執行,會設定這個值,它們停止後應該會恢復。先結束那些工具。如果它還是 1,而且沒有任何東西需要它:
sudo pmset -a disablesleep 0
不確定是哪個工具設的,就重新啟動。
闔上螢幕但還在執行
接著外接顯示器、電源和鍵盤或滑鼠的筆電,可以在闔上螢幕的狀態下繼續執行。這是 clamshell 模式,是刻意的設計,所以拔掉顯示器來測試。如果 MacBook 放在包包裡還是熱的,不要讓它繼續待在裡面。打開它,執行上面的指令找出那個程序,因為有些工具會刻意讓 Mac 在闔上螢幕時保持清醒。
不要這樣做
- 不要一開始就重設 SMC 或 NVRAM。幾乎所有情況都只是一個正在執行的程序,而上面的指令幾秒鐘就跑完。
- 不要照論壇隨便改
pmset。這些設定在重新啟動後還在,很容易忘記。pmset -g custom可以看到設了什麼,sudo pmset restoredefaults可以還原。 - 不要為了解決這個問題去刪
sleepimage。那個檔案不是讓 Mac 保持清醒的原因。 - 不要忽視在包包裡發燙的 MacBook。先把它拿出來降溫。
Mole 能幫上什麼
在 Mole 的「狀態」裡,程序選單中的「為什麼在執行?」讀的就是同樣的 assertion,如果那個程序正阻止 Mac 睡眠,會顯示「程序正在阻止系統睡眠。」。當你懷疑是某個 App 的時候,這很有幫助。要一次看完整清單,還是 pmset -g assertions 比較快。Mole 自己的「防止睡眠」就是會持有 assertion 的工具之一,這是刻意的,而且預設模式也包括闔上螢幕的情況,它用的是 disablesleep,工作階段結束時會還原。如果你要的是和本文相反的事,見讓 Mac 保持清醒又不耗電。如果電池在夜裡下降,見為什麼 MacBook 電池消耗很快。
常見問題
為什麼我的 Mac 不睡眠?
通常是有程序持有電源 assertion,例如媒體、遠端存取工具或防止睡眠的 App。pmset -g assertions 會指出是哪一個。
怎麼看是什麼阻止 Mac 睡眠?
在終端機執行 pmset -g assertions,看 PreventUserIdleSystemSleep 和 PreventSystemSleep 那幾行,每一行都會指出一個程序。
為什麼我的 Mac 剛睡著就醒了?
常見的嫌疑是配件和網路喚醒。拔掉 USB 裝置,並檢查 系統設定 › 電池 › 選項 裡的 進行網路連線時喚醒電腦。
coreaudiod 在阻止睡眠是怎麼回事?
有東西開著音訊,常見的是瀏覽器分頁或音樂 App,即使暫停也一樣。關掉它,assertion 就該消失了。
SleepDisabled 是什麼意思?
整台 Mac 的睡眠被關掉了,通常是防止睡眠的工具造成的。結束那個工具。如果它還是 1,執行 sudo pmset -a disablesleep 0。