跳转至

Macbook 显示器定时禁止自动休眠

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

主要解决的问题:

  • 在显示器休眠之后,要等很久才能点亮外接显示屏幕

实现步骤

在 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 = 10Minute = 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>

📌 使用步骤(复习)

  1. 保存为文件: ~/Library/LaunchAgents/com.user.dailycaffeinate.plist

  2. 加载任务:

    launchctl load ~/Library/LaunchAgents/com.user.dailycaffeinate.plist
    
  3. 查看是否设置成功:

    launchctl list | grep caffeinate
    
  4. 如果你需要修改后重新加载:

    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
回到页面顶部