Mac

pmset 精炼速查

pmset 一页速查(开发者版,含简单实践)

适用对象:做开发/运维的 Mac 用户。目标:一页带走,覆盖“能做什么”全部 + 常见诊断与自动化示例。
修改设置需 sudo(root);0 常表示禁用该空闲睡眠计时。


你能用它干什么(速览)

快速语法与作用域

# 改设置(作用域:-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]

高频设置(最常用)

安全睡眠/待机相关(慎改)

UPS(仅台式/服务器,配合 -u

-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+)

常见诊断路径

计划任务(开关机/唤醒/睡眠)

# 一次性: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

简单实践(可直接套用)

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

文件位置与复位

风险与提示

—— 完 ——