1. 程式人生 > >Mac OS 電源管理及 pmset 休眠 命令(轉)

Mac OS 電源管理及 pmset 休眠 命令(轉)

最近在用mac時發現一個問題,晚上正在上傳或者下載的程式在電腦自動省電時會被關閉,第二天發現檔案只上傳了一半。想mac一定會有一個命令列的電源管理工具,在網上找到了下邊文章,拿來分享。方便作伺服器開發的朋友可以自已使用程式控制mac系統的電源使用。

pmset 都能幹什麼

這個工具可以設定和列出電量管理的設定。一部分功能在“節能偏好”面板中通過圖形介面的形式提供出來。然而,pmset 預留的一些更加靈活的選項並不適用於圖形介面。

它可以根據使用情況設定不同的電量管理設定。當機器正在充電、使用電池、UPS 或者三者全都有的情況下,可以應用不同的設定。下面是相關的標記:

  • -c 調節設定用於連線充電器的時候
  • -b 調節設定用於使用電池的時候
  • -u 調節設定用於使用 UPS 的時候
  • -a 調節設定用於全部情景
  • 具體的內容會在下面的 pmset 命令手冊中詳細描述。

    pmset 命令手冊

    正如前面講的一樣,這個命令在 mac 系統裡是自帶的,在終端直接輸入 man pmset 可以直接翻出手冊來看,如果你比較懶,可以下面我翻的這個精簡版的。附上原文地址:PMSET,這個命令是基於 Mac OS X version 10.9,不過這種命令應該不會有太多變化。

    命令名稱

    pmset,操縱電源管理設定。熟悉 unix 或者 linux 的同學都知道,命令的起名都是很有講究的,比如這個 pmset 看起來很怪,其實就是 p

    ower managment settings 的縮寫。

    概述

    1. pmset [-a | -b | -c | -u] [setting value] [...]

    2. pmset -u [haltlevel percent] [haltafter minutes] [haltremain minutes]

    3. pmset -g [option]

    4. pmset schedule [cancel] type date+time [owner]

    5. pmset repeat cancel

    6. pmset repeat type

      weekdays time

    7. pmset relative wake seconds

    8. pmset [touch | sleepnow | displaysleepnow | lock | boot]

    描述

    pmset 管理電源設定,像空閒睡眠時間,當管理員訪問時喚醒,斷電自動重啟等等。

    注意,這個過程可以通過使用 IO 電源斷言動態的覆蓋。無論何時程式覆蓋任何系統電源設定, pmset 將列出那些程式以及他們的電源斷言

    使用情景

    pmset 可以修改任意電源管理設定以下定義的值。你可以在命令列中使用 pmset 指定至少一個情景-值對。-a-b-c-u 標記設定是否應用到電池(-b),充電(-c),UPS(-u) 或者全部(-a)。

    使用一個 0 的分鐘引數來設定空閒時間,絕不睡眠,硬碟睡眠和顯示器睡眠。

    pmset 必須由 root 使用者執行來修改任何的設定。

    設定資訊

    • displaysleep – 顯示器睡眠計時器;替換 10.4 版本中的 dim 引數(值為分鐘,或者設定 0 來禁用)。
    • disksleep – 硬碟降速計時器;替換 10.4 版本中的 spindown 引數(值為分鐘,或者設定 0 來禁用)。
    • sleep – 系統睡眠計時器(值為分鐘,或者設定 0 來禁用)。
    • womp – 通過乙太網喚醒(值為 1 或者 0)
    • ring – 通過調變解調器環境(值為 1 或者 0)
    • autorestart – 當電量損耗時自動重啟(值為 1 或者 0)
    • lidwake – 當筆記本開啟蓋子的時候喚醒機器(值為 1 或者 0)
    • acwake – 當電源(AC 或者電池)改變的時候喚醒機器(值為 1 或者 0)
    • lessbright – 當切換電源時,略微調低顯示器亮度(值為 1 或者 0)
    • halfdim – 顯示器睡眠將使用在最大亮度和關閉顯示器之間的中間亮度(值為 1 或者 0)
    • sms – 當重力突然改變時,使用瞬時運動感測器來停止磁碟頭(值為 1 或者 0)
    • hibernatemode – 改變休眠模式。請小心使用(值為整數)
    • hibernatefile – 改變休眠映象檔案位置。映象應該只被定為到根卷中。請小心使用(值為路徑)
    • ttyskeepawake – 當任何 tty(如:遠端登入會話) 在活動狀態時,阻止系統空閒睡眠。tty 只能是非活動 當它的空閒時間超過系統睡眠計時器(值為 1 或者 0)
    • networkoversleep – 這個設定影響 OS X 在系統睡眠時如何聯網。這個設定不被全平臺使用,不支援修改這個值。
    • destroyfvkeyonstandby – 當變為待機模式時銷燬檔案庫金鑰。預設地,當系統待機時金鑰被保留。如果關鍵檔案被銷燬,將導致當用戶退出待機模式時輸入密碼(值為 1 – 銷燬 ,0 – 保留)
    • autopoweroff – 系統將寫入休眠映象並且進入到低電量晶片組睡眠。從這個狀態喚醒所花的時間要比普通休眠喚醒的時間要長。如果有外部裝置連線,系統不會自動切斷電源,如果系統使用電池供電,或者系統被繫結在網路並且通過網路訪問被喚醒功能開啟。
    • autopoweroffdelay – 進入自動切斷電源模式的延遲(值為表示分鐘的整數)

    顯示資訊

    • -g(不帶引數) 顯示當前正在使用的設定
    • -g live 顯示當前正在使用的設定
    • -g custom 顯示為所有電源的自定義設定
    • -g cap 顯示機器支援哪些電力管理功能
    • -g sched 顯示計劃啟動、喚醒或關閉、睡眠事件
    • -g ps / batt 顯示電池和 UPS 的狀態
    • -g pslog 顯示電源(電池或者 UPS)狀態的連續日誌
    • -g rawlog 顯示直接讀取電池的電池狀態的連續日誌
    • -g therm 顯示影響 CPU 速度的熱力條件。不適用於全部平臺
    • -g thermlog 顯示影響 CPU 速度的熱量的通知日誌。不適用於全部平臺
    • -g assertions 顯示電量斷言的概要。斷言可以阻止系統睡眠或顯示器睡眠。適用於 10.6 及更新版本
    • -g assertionslog 顯示電量斷言的建立及釋出日誌。適用於 10.6 及更新版本
    • -g sysload 顯示“系統負載顧問”——。適用於 10.6 及更新版本
    • -g ac/adapter 顯示關於交流電源介面卡的詳情。只有 MacBoook 和 MacBook Pro 支援。
    • -g log 顯示睡眠,喚醒及其他電源管理時間的歷史。這個日誌只提供給管理員和除錯目的
    • -g uuid 顯示當前活躍的睡眠、喚醒的 UUID。
    • -g uuidlog 顯示當前活躍的睡眠、喚醒的 UUID,並且列印一個新的被系統設定的 UUID
    • -g history 一個除錯工具。當使用啟動引數 io=0x3000000 被啟用時,列印系統睡眠喚醒的 UUID 的時間線。
    • -g powerstate 列印當前為 IO Kit 驅動電源狀態。呼叫者應該至少提供一個 IO Kit 類名來作為引數。如果沒有類名被聽過,它將列印全部驅動的電源狀態。
    • -g powerstatelog 
    • -g stats 列印自系統啟動以來睡眠和喚醒系統的計數。
    • -g systemstate 列印當前系統的電量狀態和可用能力。
    • -g everything 列印每個引數。這是一個有用的快速收集所有 pmset 提供的輸出。適用於 10.8。

    安全睡眠引數

    hibernatemode 有一個位欄位引數來定義安全睡眠能力。通過 0 來禁用安全睡眠,強制計算進入普通睡眠。

    • ____ ___1 (bit 0) 開始休眠,注意 OS X 寫記憶體狀態到休眠映象在睡眠的時候。當喚醒時,OS X 將從休眠映象中恢復。位 0 設定引起 OS X 寫記憶體狀態並且立刻休眠在睡眠時間。
    • ____ __1_ (bit 1) 
    • ____ 1___ (bit 3)
    • ___1 ____ (bit 4)

    我們不推薦修改休眠設定。你做的任何改變都不被支援。如果你一定要這麼做,我們推薦使用以下三種設定其中之一。為了保證你的利益,請不要使用除了了 0,3,25 以外的設定。

    • hibernatemode = 0 桌上型電腦預設支援。系統將不會備份記憶體到持久化儲存。系統必須從記憶體內容中喚醒;當斷電時系統將會失去上下文。這是傳統的普通睡眠方式。
    • hibernatemode = 3 行動式計算機預設支援。系統將儲存一份記憶體的備份到持久化儲存(磁碟)中,並且在睡眠過程中持續給記憶體供電。系統將從記憶體中被喚醒,除非斷電才強制從磁碟映象會恢復。
    • hibernatemode = 25 只能通過 pmset 才可以設定。系統將儲存一份記憶體的備份到持久化儲存(磁碟)中,並且將會給記憶體斷電。系統將從磁碟映象中恢復。如果你希望“休眠”——慢一點但是有益電池壽命,你應該使用這個設定。

    待機引數

    standby 使得機器在睡眠了一段指定的時間間隔後,核心電源管理會自動休眠機器。通過睡眠來節電。這個設定預設在被支援的硬體環境下是預設開啟的。如果這個功能被機器支援,standby 設定在 pmset -g 命令中是可見的。

    • standby 只有 hibernate 被設定為 3 或者 25 時才工作。
    • standbydelay 指定一個以秒為單位的延遲,在寫入休眠映象到磁碟並且記憶體斷電之前。

    UPS 詳細引數

    排程事件引數

    pmset 允許你排程系統睡眠,關機,喚醒以及電源開啟。“schedule”是設定一次電源事件的,“repeats”用來設定每日或者每週的電源開啟及關閉事件。注意,你只能定義一對重複事件的排程——“power on” 事件或者“power off”事件。對於睡眠週期的應用,pmset 可以排程一個

    電源引數

    • -g 後面跟隨一個 batt 或者 ps 引數將顯示全部電源的狀態。
    • -g 後面跟隨 pslog 或者 rawlog 引數通常被用來除錯,比如隔離一個老舊電池的問題。

    其他引數

    • boot 告訴核心系統啟動完成。對於 Darwin 使用者來說可能很有用。
    • force 告訴 PM 立刻啟用這些設定。不要寫入到磁碟,並且設定可以簡單地被重寫。在 PM 配置外掛沒有執行的情況下很有用。
    • touch PM 從磁碟中重新讀取已存在的設定。

    用例

    這個命令設定了在使用電池電量的情景下,顯示器睡眠倒計時為 5 分鐘,保留電池上的其他設定並且其他電源不受影響

    pmset -b displaysleep 5

    設定顯示器睡眠倒計時為 10 分鐘,磁碟睡眠倒計時為 10 分鐘,系統睡眠倒計時為 30 分鐘,並且為全部電源情景(交流電,電池和 UPS)啟動 WakeOnMagicPacket。

    pmset -a displaysleep 10 disksleep 10 sleep 30 womp 1

    恢復系統的能源設定為預設值。

    對於一個附帶並支援 UPS 的系統來說,這指示系統在 UPS 電池電量低於 40% 的時候要緊急關閉。

    pmset -u haltlevel 40

    對於一個附帶並支援 UPS 的系統來說,下面這條指令指示了系統在 UPS 電池電量低於 25% 或者 UPS 預估可用時間少於 30 分鐘時要緊急關閉。這兩個條件滿足一個就會執行系統關閉。

    pmset -u haltlevel 25 haltremain 30

    對於一個附帶並支援 UPS 的系統來說,這個指令指示當系統使用 UPS 電池時在兩分鐘後關閉系統。

    pmset -u haltafter 2

    系統計劃於 2016 年 7 月 4 日 20:00 的時候自動從睡眠中喚醒。

    pmset schedule wake "07/04/16 20:00:00"

    系統計劃在每週的週二到週六上午 11 點鐘關閉。

    pmset repeat shutdown TWRFS 11:00:00

    計劃在每週二的中午 12 點喚醒或供電,並且在每天晚上 8 點鐘睡眠。

    pmset repeat wakeorpoweron T 12:00 sleep MTWRFSU 20:00:00

    列印系統在使用的電量管理設定

    pmset -g

    列印此刻的電池或電源的狀態快照。

    pmset -g batt

    如果你的系統在使用電池供電的使用還有 20-50% 剩餘電量時突然睡眠,請在終端視窗中執行下面這個命令。當你看到問題和,你將能夠檢測到老化電池的突然不連續電量(比如突然從 30% 降到 0%)。

    pmset -g pslog

    總結

    基於上面學習和整理出的內容來看,發生在我的 Mac 上的情況還是很正常的情況,所以也不打算修改 pmset 中的電源引數了,雖然沒有怎麼折騰,但是確實學到不少有意思的知識,這就算沒白忙活。(完)

    參考文章