防止睡眠
又稱:是什麼讓我的Mac無法進入睡眠
簡短回答
「防止睡眠」是活動監視器「能源」標籤頁中的一欄,顯示某個App此刻是否正在阻止Mac進入睡眠。App在播放媒體、下載或執行長時間的工作時,會刻意這麼做。
App會透過取得電源斷言(power assertion),也就是要求macOS延後睡眠,讓Mac保持喚醒。影片播放程式在播放電影時會這麼做,備份或下載則可能一直持續到完成為止。大部分App在完成後會撤回這個要求。
如果你的Mac不會自動進入睡眠,或顯示器一直亮著,最先要看的就是「防止睡眠」這一欄。
如何找出是什麼讓Mac無法睡眠
打開活動監視器,按一下「能源」標籤頁,再按一下「防止睡眠」欄依此排序。顯示「是」的App正在讓Mac保持喚醒。
想看更多細節,請在「終端機」中執行pmset -g assertions。它會列出每個有效的斷言及其所屬的程序,背景程序也包含在內。
該怎麼處理
如果這個App有正當理由,例如下載正在進行,就讓它完成。如果沒有,正常結束這個App通常就會撤回斷言。正在播放媒體的瀏覽器標籤頁(包括已靜音的)是常見的原因。
如何看懂pmset -g assertions
想要一句話的答案,就執行pmset -g,看sleep那一行。如果有東西讓Mac保持喚醒,這一行的結尾會是sleep prevented by,後面接著一串程序名稱。
pmset -g assertions會提供詳細資訊。上半部是各種斷言類型的摘要,名為Listed by owning process的部分則會顯示每個程序、它持有斷言多久了,以及App為這個斷言取的名稱。你最常看到的類型有:
- PreventUserIdleSystemSleep:Mac不會自行進入睡眠,但顯示器仍然可以關閉。
- PreventUserIdleDisplaySleep:顯示器保持亮著。影片播放器和簡報App會使用這個。
- PreventSystemSleep:Mac完全不會進入睡眠。它的
caffeinate -s版本只在接上電源時有效。 - NoIdleSleepAssertion:有些App在讓Mac不進入閒置睡眠時使用的另一個名稱。
- powerd持有名為Prevent sleep while display is on的斷言:你正在使用Mac時,這是正常的。
當coreaudiod或其他系統程序讓Mac保持喚醒時
有時pmset -g assertions中的持有者是系統程序,例如coreaudiod,它在替另一個App持有斷言。這種情況下,該項目中會有一行寫著Created for PID,後面接著一個數字。這個數字就是你要找的App。
- 執行
pmset -g assertions,在該系統程序底下找到Created for PID那一行。 - 執行
ps -p <PID> -o comm=,把<PID>換成那個數字,就會顯示App的名稱。 - 停止那個App正在進行的音訊活動,例如暫停的影片、開著的通話或錄音,或是結束這個App。
- 再次執行
pmset -g assertions,確認該項目已經消失。
Mac無法進入睡眠的常見原因
- 開著音訊或影片的瀏覽器標籤頁或App,即使已暫停或靜音。
- 仍開著麥克風或相機的視訊通話App。
- 尚未完成的下載、上傳、雲端同步和備份。
- 正在讀取磁碟的App。Apple舉的例子是「音樂」正在播放歌曲。
- 有人正在使用你的Mac分享的服務,例如連接的印表機或共享檔案。
- 作用中的終端機工作階段,例如遠端登入。
pmset中的ttyskeepawake設定會在工作階段使用期間避免閒置睡眠。執行pmset -g | grep ttyskeepawake查看它,1表示開啟。 - 你啟動後就忘了的
caffeinate指令或防睡眠工具程式。
如何查看是什麼喚醒了Mac
如果你的Mac進入睡眠後又醒來,電源記錄會記下原因。執行pmset -g log | grep -e " Sleep " -e " Wake " -e " DarkWake " | tail -20,查看最近幾次的睡眠和喚醒。due to後面的文字就是原因,例如上蓋、鍵盤或觸控式軌跡板,或是排程工作。
DarkWake行代表顯示器關閉時的短暫喚醒,macOS會利用它執行背景工作。一夜之間出現幾次是正常的。
大家常問的問題
活動監視器中的「防止睡眠」是什麼意思?
它表示某個App此刻是否正在阻止你的Mac進入睡眠。「是」表示這個App已要求macOS保持喚醒。
如何查看是什麼在阻止我的Mac進入睡眠?
查看活動監視器「能源」標籤頁中的「防止睡眠」欄,或在「終端機」中執行pmset -g assertions,查看所有讓Mac保持喚醒的程序。
我可以刻意讓Mac保持喚醒嗎?
可以。系統內建的caffeinate指令在執行期間會讓Mac保持喚醒。按下Control-C即可停止。
為什麼coreaudiod會顯示為正在避免睡眠?
coreaudiod負責處理所有App的聲音,所以當某個App正在播放或錄製音訊時,它會持有睡眠斷言。pmset -g assertions中的Created for PID行會告訴你是哪個App。
powerd在避免睡眠,這樣不好嗎?
不會。powerd是macOS的電源管理程序,你在使用Mac時,它持有名為Prevent sleep while display is on的斷言是正常的。
「終端機」工作階段會讓我的Mac保持喚醒嗎?
會。ttyskeepawake設定開啟時,只要有終端機工作階段(例如遠端登入)處於作用中,macOS就不會閒置睡眠。工作階段閒置的時間超過睡眠計時器後,就算是非作用中。用caffeinate執行的指令也會讓Mac保持喚醒,直到指令完成。
相關詞條
逐步教學:Mac為什麼無法睡眠。
想找比活動監視器更好的工具?請參閱Mac上最好用的活動監視器替代方案,或瀏覽詞彙表中的所有詞條。