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