Macbook 显示器定时禁止自动休眠
理论来说Mac 上面针对外接屏幕,使用以下截图就可以解决,但是不知道为什么我的显示器还是会一直休眠.只要使用计划任何+命令的方式每天上我班的时候禁止休眠,下班自动休眠.防止 HR 小姐姐说我浪费电.

主要解决的问题:
- 在显示器休眠之后,要等很久才能点亮外接显示屏幕
实现步骤¶
在 macOS 上,如果你想每天自动执行 caffeinate -d 命令(防止显示器进入休眠状态),可以通过 macOS 的内建工具 launchd 创建一个计划任务。相比 Linux 的 cron,macOS 更推荐用 launchd 方式来安排周期性任务。
✅ 方法:使用 launchd 创建每日运行的 caffeinate -d 任务¶
步骤 1:创建 plist 文件¶
在终端中执行:
mkdir -p ~/Library/LaunchAgents
nano ~/Library/LaunchAgents/com.user.caffeinate.plist
填入以下内容(这个示例每天早上 9 点运行 caffeinate -d):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.caffeinate</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/caffeinate</string>
<string>-d</string>
<string>-t</string>
<string>3600</string> <!-- 保持 1 小时 -->
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
⚠️ 注意:
-
-d:防止显示器睡眠。 -
-t 3600:维持 3600 秒(1 小时),否则caffeinate会一直阻止睡眠直到你手动停止。 -
如果你想保持整天不睡眠,可以不加
-t,但要小心可能一直占用系统。
步骤 2:加载任务¶
launchctl load ~/Library/LaunchAgents/com.user.caffeinate.plist
✅ 可选:测试立即运行任务¶
launchctl start com.user.caffeinate
🧼 取消计划任务¶
如果以后你不需要了:
launchctl unload ~/Library/LaunchAgents/com.user.caffeinate.plist
rm ~/Library/LaunchAgents/com.user.caffeinate.plist
如果是早上 9 点执行到晚上 7 点结束?
每天早上 9 点自动运行
caffeinate -d,并持续运行到晚上 7 点(19:00)时自动结束。
我们可以通过 launchd + 脚本来精确控制这个行为,下面是完整方案。
✅ 实现方式:用 launchd 启动脚本,自动运行 10 小时¶
macOS 自带的 caffeinate 支持 -t 参数来指定运行时间(单位为秒)。
从 9:00 到 19:00 是 10 小时(36000 秒),因此我们只需每天早上 9 点执行一次:
caffeinate -d -t 36000
这样它就会自动维持 显示器唤醒 10 小时,无需显式停止任务。
🧭 实现步骤¶
✅ 第 1 步:创建启动任务 plist¶
nano ~/Library/LaunchAgents/com.user.dailycaffeinate.plist
填入内容如下(请根据你系统确认 /usr/bin/caffeinate 是否是实际路径):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.dailycaffeinate</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/caffeinate</string>
<string>-d</string>
<string>-t</string>
<string>36000</string> <!-- 10 小时 = 36000 秒 -->
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>RunAtLoad</key>
<false/>
</dict>
</plist>
✅ 第 2 步:加载任务¶
launchctl load ~/Library/LaunchAgents/com.user.dailycaffeinate.plist
你可以用以下命令测试一下是否加载成功:
launchctl list | grep caffeinate
✅ 可选测试:立即运行看看效果¶
launchctl start com.user.dailycaffeinate
然后查看是否 caffeinate 正在运行:
ps aux | grep caffeinate
✅ 说明回顾¶
| 时间点 | 行为 |
|---|---|
| 每天 09:00 | 自动执行 caffeinate -d -t 36000 |
| 自动运行 10 小时 | 保持显示器唤醒,不会进入休眠 |
| 晚上 19:00 | 自动退出,无需额外处理 |
如果你想 保持整台机器唤醒(而不仅是防止显示器睡眠),可以将 -d 改成 -di。
需要我帮你调整脚本或增加日志记录功能也可以继续告诉我。
如果你想让 caffeinate -d -t 30600 在 每天早上 10:30 开始执行 到下午 7 点,只需要在 launchd 的 plist 文件中将时间改为 Hour = 10 且 Minute = 30。
✅ 修改后的 plist 文件内容如下:¶
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.dailycaffeinate</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/caffeinate</string>
<string>-d</string>
<string>-t</string>
<string>30600</string> <!-- 10 小时 -->
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>30</integer>
</dict>
<key>RunAtLoad</key>
<false/>
</dict>
</plist>
📌 使用步骤(复习)¶
-
保存为文件:
~/Library/LaunchAgents/com.user.dailycaffeinate.plist -
加载任务:
launchctl load ~/Library/LaunchAgents/com.user.dailycaffeinate.plist -
查看是否设置成功:
launchctl list | grep caffeinate -
如果你需要修改后重新加载:
launchctl unload ~/Library/LaunchAgents/com.user.dailycaffeinate.plist launchctl load ~/Library/LaunchAgents/com.user.dailycaffeinate.plist
✅ 重建流程(保险做法)¶
如果你愿意,也可以重新创建一个简单的 .plist,我帮你命令粘贴如下:
cat <<EOF > ~/Library/LaunchAgents/com.user.dailycaffeinate.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.dailycaffeinate</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/caffeinate</string>
<string>-d</string>
<string>-t</string>
<string>30600</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>30</integer>
</dict>
<key>RunAtLoad</key>
<false/>
</dict>
</plist>
EOF
chmod 644 ~/Library/LaunchAgents/com.user.dailycaffeinate.plist
launchctl unload ~/Library/LaunchAgents/com.user.dailycaffeinate.plist 2>/dev/null
launchctl load ~/Library/LaunchAgents/com.user.dailycaffeinate.plist