pmset - 控制 macOS 系统电源、睡眠、唤醒与节能

文章目录


NAME

shell 复制代码
pmset -- manipulate power management settings

概要

shell 复制代码
pmset [-a | -b | -c | -u] [setting value] [...]

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

pmset -g [option]

pmset schedule [cancel | cancelall] type date+time [owner]

pmset repeat cancel

pmset repeat type weekdays time

pmset relative [wake | poweron] seconds

pmset [touch | sleepnow | displaysleepnow | boot]s

描述

pmset 用于管理电源管理设置,包括空闲休眠时间、管理访问唤醒、断电后自动重启等功能。

需要注意的是,进程可能通过使用 I/O Kit 电源断言动态覆盖这些电源管理设置。当进程覆盖任何系统电源设置时,pmset 会在 -g-g assertions 中列出这些进程及其电源断言。详情请参阅 caffeinate(8)


SETTING

pmset 可以修改以下定义的任何电源管理设置值。在命令行调用 pmset 时,您可以指定一个或多个设置与值的组合。通过 -a-b-c-u 标志来确定这些设置是应用于电池 (-b)、充电器 (交流电源) (-c)、不间断电源 (-u) 还是所有情况 (-a)。

对于 sleep、disksleep 和 displaysleep 设置,使用参数值 0 表示永不进入空闲状态。

修改任何设置时,必须以 root 权限运行 pmset


SETTINGS

  • displaysleep - 显示器睡眠计时器;在 10.4 版本中取代了 'dim' 参数(单位为分钟,设为 0 表示禁用)
  • disksleep - 磁盘停转计时器;在 10.4 版本中取代了 'spindown' 参数(单位为分钟,设为 0 表示禁用)
  • sleep - 系统睡眠计时器(单位为分钟,设为 0 表示禁用)
  • womp - 通过以太网魔术包唤醒(取值 = 0/1)。等同于系统设置中的"允许网络访问唤醒"。
  • ring - 通过调制解调器振铃唤醒(取值 = 0/1)
  • powernap - 在支持的机器上启用/禁用 Power Nap 功能(取值 = 0/1)
  • proximitywake - 在支持的系统中,此选项控制当使用相同 iCloud ID 的设备靠近时从睡眠状态唤醒系统(取值 = 0/1)
  • autorestart - 断电后自动重启(取值 = 0/1)
  • lidwake - 当笔记本上盖(或翻盖)打开时唤醒机器(取值 = 0/1)
  • acwake - 当电源(交流电/电池)切换时唤醒机器(取值 = 0/1)
  • lessbright - 切换至该电源时略微降低显示器亮度(取值 = 0/1)
  • halfdim - 显示器睡眠时会在全亮和完全关闭之间使用中间半亮度状态(取值 = 0/1)
  • sms - 使用 Sudden Motion Sensor 在 G 力突变时停泊磁盘磁头(取值 = 0/1)
  • hibernatemode - 更改休眠模式。请谨慎使用。(取值 = 整数)
  • hibernatefile - 更改休眠镜像文件位置。镜像只能位于根卷上。请谨慎使用。(取值 = 路径)
  • ttyskeepawake - 当任何 tty(例如远程登录会话)处于"活动"状态时阻止系统空闲睡眠。仅当 tty 的空闲时间超过系统睡眠计时器时才被视为"非活动"。(取值 = 0/1)
  • networkoversleep - 此设置影响 OS X 网络在系统睡眠期间如何呈现共享网络服务。并非所有平台都使用此设置;更改其值不受支持。
  • destroyfvkeyonstandby - 进入待机模式时销毁 File Vault 密钥。默认情况下即使系统进入待机模式也会保留 File Vault 密钥。如果密钥被销毁,用户从待机模式恢复时需要输入密码。(取值:1 - 销毁,0 - 保留)

GETTING

  • -g(不带参数)将显示当前使用的设置。
  • -g live 显示当前使用的设置。
  • -g custom 显示所有电源的自定义设置。
  • -g cap 显示机器支持的电源管理功能。
  • -g sched 显示计划中的启动/唤醒和关机/睡眠事件。
  • -g ups 显示UPS紧急阈值。
  • -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 显示"系统负载建议"------从IOGetSystemLoadAdvisory API获取的系统活动摘要。适用于10.6及更高版本。
  • -g sysloadlog 显示系统负载建议的实时变化日志。适用于10.6及更高版本。
  • -g ac / adapter 显示连接的交流电源适配器的详细信息。仅支持MacBook和MacBook Pro。
  • -g log 显示睡眠、唤醒和其他电源管理事件的历史记录。此日志用于管理和调试目的。
  • -g uuid 显示当前活动的睡眠/唤醒UUID;在OS X中用于关联一个睡眠周期内的睡眠/唤醒活动。
  • -g uuidlog 显示当前活动的睡眠/唤醒UUID,并在系统设置新UUID时打印。
  • -g history 是一个调试工具。当启用启动参数io=0x3000000时,打印系统睡眠/唤醒UUID的时间线。
  • -g historydetailed 打印睡眠/唤醒的驱动程序级时间。传递一个UUID作为参数。
  • -g powerstate [类名] 打印I/O Kit驱动程序的当前电源状态。调用者可以提供一个或多个I/O Kit类名(以空格分隔)作为参数。如果未提供类名,则打印所有驱动程序的电源状态。
  • -g powerstatelog [-i interval] [类名] 定期打印某些驱动程序的电源状态驻留时间。调用者可以提供一个或多个I/O Kit类名(以空格分隔)。如果未提供类名,则记录IOPower平面的根注册表条目。
    调用者可以使用 -i <polling interval> 指定轮询间隔(以秒为单位);否则默认为5秒。
  • -g stats 打印自启动以来系统经历的睡眠和唤醒次数。
  • -g systemstate 打印系统的当前电源状态和可用功能。
  • -g everything 打印GETTING标题下每个参数的输出。这对于快速收集pmset提供的所有输出非常有用。适用于10.8及更高版本。

安全睡眠参数

hibernatemode 支持 0、3 或 25 三个值。是否写入休眠映像还取决于 standbyautopoweroff 的值。

例如,在支持待机的台式机上,系统会在指定的 standbydelay 时间后写入休眠映像。若要完全禁用休眠映像,请确保将 hibernatemodestandbyautopoweroff 全部设为 0。

在台式机上,hibernatemode 默认为 0。系统不会将内存内容备份到持久存储中。系统必须从内存内容中唤醒;断电时系统会丢失上下文。这也就是传统意义上的普通睡眠模式。

在便携设备上,hibernatemode 默认为 3。系统会将内存副本存储到持久存储(磁盘)中,并在睡眠期间保持内存供电。除非断电迫使系统从休眠映像恢复,否则系统将从内存中唤醒。

hibernatemode = 25 只能通过 pmset 设置。系统会将内存副本存储到持久存储(磁盘)中,并切断内存电源。系统将从磁盘映像恢复。如果你需要"休眠"功能------即较慢的睡眠/唤醒速度,但能获得更好的电池续航------应该使用此设置。

请注意,hibernatefile 只能指向根卷上的文件。


待机参数

standby 参数使内核电源管理在机器睡眠达到指定时间后自动进入休眠状态。这能在睡眠期间节省电力。对于支持的硬件,此设置默认启用。如果当前机器支持该功能,在 pmset -g 命令输出中可以看到 standby 设置项。

standbydelayhighstandbydelaylow 用于指定进入待机模式前,将休眠映像写入磁盘并关闭内存电源的延迟时间(以秒为单位)。当剩余电池电量高于 highstandbythreshold 时使用 standbydelayhigh,低于该阈值时则使用 standbydelaylow

highstandbythreshold 的默认值为 50%。

在支持的平台上,autopoweroff 默认启用以符合欧盟《能源相关产品指令》第6号方案的要求。系统在睡眠 <autopoweroffdelay> 秒后,会写入休眠映像并进入更低功耗的芯片组睡眠状态。

从该状态唤醒所需时间比常规睡眠唤醒更长。

autopoweroffdelay 指定进入自动断电模式前的延迟时间(以秒为单位)。


UPS 专用参数

UPS 专用参数仅在 -u 选项后有效。UPS 设置还具有启用/禁用状态。使用 -1 参数代替百分比或分钟数可关闭任何设置。如果指定了多个关机条件,系统将在低电量情况下首个触发的条件发生时执行关机。

haltlevel - 当 UPS 电池放电时,触发紧急关机的电池电量阈值(以百分比为单位)

haltafter - 当 UPS 电池放电时,在持续运行此时间后触发紧急关机(以分钟为单位,0 表示禁用)

haltremain - 当 UPS 电池放电时,在预估剩余电量时间达到此值时触发紧急关机(以分钟为单位,0 表示禁用)

注意:这些设置均不支持带有内置电池的系统(例如笔记本电脑)。UPS 紧急关机设置仅适用于台式机和服务器。


计划事件参数

pmset 允许你安排系统睡眠、关机、唤醒和/或开机。

"schedule" 用于设置一次性电源事件;

"repeat" 用于设置每日/每周的开机和关机事件。

请注意,你只能安排一对重复事件------一个 "开机" 事件和一个 "关机" 事件。

对于睡眠循环应用,pmset 可以安排一个 "相对" 唤醒或开机事件,该事件将在系统睡眠/关机结束后的若干秒内触发,但此事件无法取消且本质上不精确。

类型 - 可以是 sleep、wake、poweron、shutdown、wakeorpoweron 之一
日期/时间 - "MM/dd/yy HH:mm:ss"(24 小时制;必须加引号)
时间 - HH:mm:ss
工作日 - MTWRFSU 的子集("M" 和 "MTWRF" 是有效字符串)
所有者 - 描述安排此一次性电源事件的人员或程序的字符串(可选)


电源参数说明

使用 -g 参数并搭配 battps 参数时,将显示所有连接电源的状态信息。

使用 -g 参数并搭配 pslograwlog 参数通常用于调试场景,例如排查老化电池导致的问题。


其他参数

boot - 通知内核系统启动已完成(通常由LoginWindow执行此操作)。可能对Darwin用户有用。

touch- 让电源管理(PM)重新从磁盘读取现有设置。

noidle - 通过创建PM断言来阻止空闲睡眠(运行期间生效;按ctrl-c取消)。此参数已弃用,推荐使用caffeinate(8)。请改用caffeinate(8)。

sleepnow - 立即让系统进入睡眠状态。

restoredefaults - 将电源管理设置恢复为默认值。

displaysleepnow - 立即让显示器进入睡眠状态。

resetdisplayambientparams - 重置特定Apple显示器的环境光参数。

dim - 在10.4版本中已弃用,改用 displaysleep'。dim 仍可继续使用。

spindown - 在10.4版本中已弃用,改用 disksleepspindown 仍可继续使用。


示例

此命令将电池供电时的显示器休眠时间设置为5分钟,同时保持电池供电和其他电源模式下的其他设置不变。

shell 复制代码
pmset -b displaysleep 5

将显示睡眠设置为10,磁盘睡眠设置为10,系统睡眠设置为30,并根据电源类型(交流电源、电池和UPS)为所有电源启用WakeOnMagicPacket功能

shell 复制代码
pmset -a displaysleep 10 disksleep 10 sleep 30 womp 1

对于配备并支持UPS的系统,此指令会在UPS电池电量降至40%以下时,触发系统执行紧急关机。

shell 复制代码
pmset -u haltlevel 40

对于配备并支持UPS的系统,此指令会在以下任一条件满足时立即执行紧急关机:UPS电池电量降至25%以下,或UPS预估剩余运行时间不足30分钟。

shell 复制代码
pmset -u haltlevel 25 haltremain 30

对于连接并支持UPS的系统,该指令会让系统在依靠UPS电池供电运行2分钟后执行紧急关机。

shell 复制代码
pmset -u haltafter 2

将系统设置为在2016年7月4日晚上8点自动从睡眠状态唤醒。

shell 复制代码
pmset schedule wake "07/04/16 20:00:00"

安排每日重复关机,从周二到周六,每天上午11点执行。

shell 复制代码
pmset repeat shutdown TWRFS 11:00:00

每周二中午12点安排重复唤醒或开机事件,每晚8点安排重复休眠事件。

shell 复制代码
pmset repeat wakeorpoweron T 12:00:00 sleep MTWRFSU 20:00:00

取消所有已计划的系统休眠、关机、唤醒和开机事件。

shell 复制代码
pmset repeat cancel

显示系统当前使用的电源管理设置。

shell 复制代码
pmset -g

打印当前时刻电池/电源状态的快照信息。

shell 复制代码
pmset -g batt

如果您的系统在电池剩余容量为20-50%时突然进入睡眠状态,请在终端窗口中持续运行此命令。当问题重现且后续接通电源唤醒电脑后,您将能检测到电量骤降现象(例如从30%直接跳至0%),这表明电池可能已老化。

shell 复制代码
pmset -g pslog

另请参阅

caffeinate(8)


文件

通过 pmset 所做的所有更改都会保存在一个 持久性偏好设置文件中(针对整个系统而非单个用户),该文件位于 /Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist


计划性的开机/关机事件则单独存储在 /Library/Preferences/SystemConfiguration/com.apple.AutoWake.plist

pmset 修改的文件与系统设置(System Settings)修改的是同一个文件。


2025-06-13(五)

相关推荐
2501_922232945 小时前
Mac电脑 系统监测工具 System Dashboard Pro
macos
大猩猩爱分享14 小时前
Mac安装docker desktop
macos·docker
serve the people15 小时前
在mac上安装sh脚本文件
macos
莫邪博客15 小时前
解决蓝牙MAC 地址倒序问题
macos
草明15 小时前
macOS 查看当前命令行的ruby的安装目录
开发语言·macos·ruby
五阿哥爱跳舞15 小时前
MAC无法 ping 通github 系列主页
macos
前端 贾公子1 天前
「混合开发」H5与原生App交互流程方案全面解析
macos·objective-c·cocoa
I烟雨云渊T1 天前
2025年的WWDC所更新的内容
macos·ios·wwdc
Fatbobman(东坡肘子)1 天前
WWDC 2025 开发者特辑 | 肘子的 Swift 周报 #088
开发语言·macos·ios·swiftui·ai编程·swift·wwdc