pmset 精炼速查
pmset 一页速查(开发者版,含简单实践)
适用对象:做开发/运维的 Mac 用户。目标:一页带走,覆盖“能做什么”全部 + 常见诊断与自动化示例。
修改设置需sudo(root);0常表示禁用该空闲睡眠计时。
你能用它干什么(速览)
- 管理:显示/系统/磁盘空闲睡眠、网络唤醒、掀盖/电源切换唤醒、Power Nap 等。
- 诊断:查阻止睡眠的进程(power assertions)、睡眠/唤醒历史、电池异常“跳水”。
- 调度:一次性或重复的开机/唤醒/关机/睡眠计划;相对时间唤醒。
- UPS:在台式机/服务器上设置紧急关机阈值。
快速语法与作用域
# 改设置(作用域:-a 全部 | -b 电池 | -c 充电 | -u UPS)
sudo pmset [-a|-b|-c|-u] [setting value] ...
# 查看
pmset -g [option]
# 计划/自动化
sudo pmset schedule <type> "MM/dd/yy HH:mm:ss"
sudo pmset repeat <type> <MTWRFSU> HH:mm:ss
pmset relative [wake|poweron] <seconds>
# 立即动作/维护
pmset [sleepnow|displaysleepnow|boot|touch]
高频设置(最常用)
- 
displaysleep N:显示器闲置 N 分钟睡眠;0=不睡
- 
sleep N:系统闲置 N 分钟睡眠;0=不睡
- 
disksleep N:磁盘闲置 N 分钟停转;0=不停
- 
womp 0|1:网络魔术包唤醒(等同“允许网络唤醒”)
- 
lidwake 0|1:掀盖唤醒(笔记本)
- 
acwake 0|1:电源切换唤醒
- 
ttyskeepawake 0|1:活跃 tty(如 SSH)时阻止系统空闲睡眠
- 
powernap 0|1:Power Nap(支持机型)
- 
hibernatemode 0|3|25:休眠策略(见下)
- 
hibernatefile <path>:休眠镜像位置(必须在根卷)
安全睡眠/待机相关(慎改)
- 
hibernatemode:- 
0(台式机常见):只睡,不写镜像;断电上下文丢失但唤醒快。
- 
3(笔记本默认):睡 + 写镜像;断电可从镜像恢复。
- 
25:总写镜像并断开内存供电;更省电,唤醒更慢。
 
- 
- 待机/自动断电:standby 0|1、standbydelayhigh/low、highstandbythreshold、autopoweroff 0|1、autopoweroffdelay。
UPS(仅台式/服务器,配合 -u)
- 
haltlevel <percent>:电量低于阈值关机
- 
haltafter <minutes>:放电运行 N 分钟后关机
- 
haltremain <minutes>:剩余可用分钟数到阈值关机
传
-1关闭该条件;多条件 任一触发 即执行关机。
查询与诊断(排障首选)
pmset -g                 # 当前设置(live)
pmset -g assertions      # 谁在阻止系统/显示器睡眠
pmset -g log             # 睡眠/唤醒历史(调试常用)
pmset -g batt            # 电池状态(或 -g ps)
pmset -g pslog           # 连续打印电池/UPS 变化(抓“电量跳水”)
pmset -g cap             # 本机支持的电源能力
pmset -g everything      # 一次性收集全部信息(10.8+)
常见诊断路径
- “电脑睡不着”:先看 pmset -g assertions→ 关闭/退出持有断言的进程(常见:下载、视频、IDE、外设守护进程)。
- “20–50% 突然睡死”:复现前先跑 pmset -g pslog,现象常见为电量从 30%→0% 跳变(疑似电池老化)。
- “合盖后网络任务中断”:检查 womp、路由器是否支持 WoL;必要时使用caffeinate保持。
计划任务(开关机/唤醒/睡眠)
# 一次性:2025-11-11 07:30 唤醒(注意 MM/dd/yy)
sudo pmset schedule wake "11/11/25 07:30:00"
# 每周二 12:00 唤醒或开机;每天 20:00 睡眠
sudo pmset repeat wakeorpoweron T 12:00:00 sleep MTWRFSU 20:00:00
# 取消所有重复计划
sudo pmset repeat cancel
# 相对唤醒:从现在起 1800 秒后唤醒(用于睡眠循环实验)
pmset relative wake 1800
- 
type:sleep|wake|poweron|shutdown|wakeorpoweron
- 
weekdays:MTWRFSU任意子集(如MTWRF工作日)
简单实践(可直接套用)
1) 临时防睡眠(优先用 caffeinate 而非改全局)
# 编译或长时间任务(直到命令结束)
caffeinate -i -- ./gradlew build
# 运行本地服务且保持显示常亮
caffeinate -di -- uvicorn app:app --reload
-i阻止系统睡眠;-d阻止显示器睡眠。
2) 远程 SSH 期间不睡
# 全局方案(更激进):有活跃 tty 时不睡
sudo pmset -a ttyskeepawake 1
# 更推荐:只在会话内防睡(退出即恢复)
ssh user@host 'caffeinate -dimsu -- long_task.sh'
3) 开发/演示两套基线(快速切换)
# 电池(省电)
sudo pmset -b displaysleep 5 sleep 15 disksleep 10 powernap 1
# 充电(演示/会议,不让系统睡)
sudo pmset -c displaysleep 15 sleep 0 disksleep 0 womp 1
4) CI/台式机稳定运行(谨慎)
# 不建议笔记本长期这样;用于专职构建主机
sudo pmset -a sleep 0 disksleep 0 displaysleep 10 womp 1
5) UPS 安全阈值(台式/服务器)
# 电量 <40% 关机
sudo pmset -u haltlevel 40
# 电量 <25% 或 剩余 <30 分钟 即关机
sudo pmset -u haltlevel 25 haltremain 30
6) 导出/还原当前配置(便携)
# 导出
pmset -g custom > ~/pmset-profile.txt
# 还原则需手动对照应用(示例:)
# 可将行内 "Battery Power" 与 "AC Power" 的键值抄回到相应作用域
# 或用下面的小脚本做“配置片段”
7) “配置片段”脚本(最小可用)
# 保存为 ~/bin/pmset-profiles.sh && chmod +x ~/bin/pmset-profiles.sh
case "$1" in
  dev-battery)
    sudo pmset -b displaysleep 5 sleep 15 disksleep 10 powernap 1 ;;
  dev-ac)
    sudo pmset -c displaysleep 15 sleep 0 disksleep 0 womp 1 ;;
  demo)
    sudo pmset -a displaysleep 20 sleep 0 disksleep 0 womp 1 ;;
  restore-defaults)
    sudo pmset restoredefaults ;;
  *)
    echo "Usage: $0 {dev-battery|dev-ac|demo|restore-defaults}" ;;
esac
常见命令一览(抄走即用)
# 查看当前设置 / 电池快照 / 阻止睡眠者 / 历史
pmset -g
pmset -g batt
pmset -g assertions
pmset -g log
# 一次性/重复计划
sudo pmset schedule wake "11/11/25 07:30:00"
sudo pmset repeat shutdown MTWRF 23:30:00
# 立即睡眠 / 仅让显示器睡 / 重新读取设置
pmset sleepnow
pmset displaysleepnow
pmset touch
文件位置与复位
- 设置持久化:/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist
- 计划任务:/Library/Preferences/SystemConfiguration/com.apple.AutoWake.plist
- 恢复默认:sudo pmset restoredefaults
风险与提示
- 
hibernatemode/hibernatefile改动影响深度睡眠与唤醒速度;镜像必须在根卷。
- 深度省电(autopoweroff等)会让唤醒更慢;用于台式/服务器需充分验证。
- 长任务请优先 caffeinate,避免误把全局睡眠改成0。
—— 完 ——
 
                                                    
No Comments