指南/Mac為什麼無法睡眠

Mac為什麼無法睡眠?如何找出是什麼讓它保持喚醒

Atta 🐬

Vitals創辦人

發佈於

簡短回答

打開「終端機」並執行pmset -g assertions。在「Listed by owning process」底下,每一行都列出一個正在阻止睡眠的App、持續多久,以及它給出的原因。活動監視器會在「能源」標籤頁的「防止睡眠」欄將同樣的App標為「是」。常見原因有:瀏覽器標籤頁中沒關掉的影片或通話、下載或備份、仍在執行的caffeinate指令,以及讓Mac接上電源時保持喚醒的設定。在MacBook上,Vitals系統監控工具不用「終端機」就能在「電池」標籤頁和選單列中列出這些App,並附上原因和持續時間。

如何找出是什麼讓Mac無法睡眠

  1. 01 打開「終端機」並執行pmset -g | grep sleep。如果有東西在阻止睡眠,sleep那一行的結尾會有類似(sleep prevented by Google Chrome, powerd)的說明。
  2. 02 執行pmset -g assertions查看詳細資訊。在「Listed by owning process」底下,每一行都列出App及其PID、它阻止睡眠多久了、阻止的類型,以及named一字後面它給出的原因,例如「Video Wake Lock」。
  3. 03 忽略powerd的「Prevent sleep while display is on」和UserIsActive這幾行。它們只表示你正在使用Mac,你停下來後就會消失。
  4. 04 打開活動監視器,按一下「能源」,查看「防止睡眠」欄。標為「是」的就是同樣的App,你可以直接從那裡結束它。
  5. 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)。一個晚上幾次是正常的。幾十次,或螢幕亮起的完整喚醒,則表示是某個裝置或設定的問題。

  1. 執行pmset -g log | grep -E "Wake from|DarkWake from" | tail -20查看最近20次喚醒。「due to」後面的文字說明了原因:lid表示你打開了螢幕、rtc/Maintenance是排定的維護喚醒,而USB、藍牙或網路裝置的名稱則指向那個裝置。
  2. 執行pmset -g sched查看macOS排定稍後進行的喚醒,以及每次喚醒是系統的哪個部分要求的。
  3. 如果是某個裝置在喚醒Mac,過夜時拔掉它,看看喚醒是否停止。
  4. 如果原因是網路喚醒,將「網路存取時喚醒」設為「僅限使用電源轉換器時」或「永不」: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可以。
購買Vitals $15 一年更新$9,或在首發期間以$15終身使用,之後為$39。一次付清,14天內可退款。

大家常問的問題

是什麼讓我的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給出的原因、它阻止睡眠多久了,以及是否讓螢幕保持開啟。

詞彙表中的相關條目

更多指南