◆
Mac pmset 定时唤醒命令详解
pmset 定时唤醒命令
基本命令
设置定时唤醒
# 每天指定时间唤醒
sudo pmset repeat wakeorpoweron MTWRFSU HH:MM:SS
# 每周指定日期和时间唤醒
sudo pmset repeat wakeorpoweron <星期> HH:MM:SS
星期参数说明
M- 星期一 (Monday)T- 星期二 (Tuesday)W- 星期三 (Wednesday)R- 星期四 (Thursday)F- 星期五 (Friday)S- 星期六 (Saturday)U- 星期日 (Sunday)
常用示例
单个定时唤醒
# 每天 8:39 唤醒
sudo pmset repeat wakeorpoweron MTWRFSU 08:39:00
# 工作日(周一到周五)8:00 唤醒
sudo pmset repeat wakeorpoweron MTWRF 08:00:00
# 周末(周六和周日)9:00 唤醒
sudo pmset repeat wakeorpoweron SU 09:00:00
# 每周一 7:30 唤醒
sudo pmset repeat wakeorpoweron M 07:30:00
多个定时唤醒的限制
重要:pmset repeat 只能设置一个重复的唤醒事件。
根据 macOS 手册说明:
"Note that you may only have one pair of repeating events scheduled - a 'power on' event and a 'power off' event."
这意味着:
- ❌ 不支持在一条命令中设置多个唤醒时间
- ❌ 如果设置多个时间,只会保留最后一个
- ✅ 只能设置一个唤醒时间和一个关机时间
如果需要多个定时唤醒,可以使用以下替代方案:
- 使用 launchd:创建多个 plist 文件,每个文件设置一个定时唤醒
- 使用 SleepWatcher:配合 launchd 实现多个定时任务
- 使用第三方工具:如 Keyboard Maestro、Power Manager 等
查看当前设置
# 查看所有电源管理设置(包括定时唤醒)
pmset -g
# 只查看定时唤醒设置
pmset -g sched
取消定时唤醒
# 取消所有定时唤醒
sudo pmset repeat cancel
其他相关命令
# 查看当前电源状态
pmset -g
# 查看睡眠/唤醒历史
pmset -g log | grep -i "wake\|sleep"
# 立即进入睡眠(测试用)
pmset sleepnow
# 设置网络唤醒(WOL)
sudo pmset -a womp 1 # 启用
sudo pmset -a womp 0 # 禁用
注意事项
- 需要管理员权限:设置定时唤醒需要使用
sudo - 时间格式:使用 24 小时制,格式为
HH:MM:SS - 星期组合:可以组合多个星期,如
MTWRF表示周一到周五 - 只能设置一个:
pmset repeat只能设置一个重复的唤醒事件,不支持多个时间点 - 替换设置:如果之前已设置定时唤醒,新命令会替换之前的设置
- 取消设置:使用
sudo pmset repeat cancel取消所有定时唤醒
多个定时唤醒的替代方案
如果需要设置多个定时唤醒时间,可以使用以下方法:
方案 1:使用 launchd(推荐)
创建多个 plist 文件,每个文件设置一个定时唤醒:
# 创建第一个定时唤醒(8:00)
cat > ~/Library/LaunchAgents/com.wake.0800.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.wake.0800</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/pmset</string>
<string>schedule</string>
<string>wakeorpoweron</string>
<string>$(date -v+1d '+%m/%d/%y') 08:00:00</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
EOF
# 加载服务
launchctl load ~/Library/LaunchAgents/com.wake.0800.plist
方案 2:使用 SleepWatcher + launchd
结合 SleepWatcher 监控唤醒事件,使用 launchd 设置多个定时任务。

还没有留言,来发表第一条吧~