Mac无法通过图形界面实现“仅连接外接显示器时启用23:00自动关机”,必须用快捷指令+Shell脚本检测显示器数量(内置屏1路、外接屏每多1路+1),仅当总数≥2时执行sudo shutdown -h 23:00或pmset调度。

你想让Mac在连接外接显示器时才启用每天23:00自动关机,断开显示器后该计划自动失效,避免误关机或干扰移动办公——这需要组合系统调度与硬件状态判断,不能仅靠图形界面单点设置。
用快捷指令+Shell脚本检测显示器状态再触发关机
这是唯一能真正响应“连接显示器”这一条件的方法,图形界面和pmset均无法感知外设插拔。
第一步:打开“快捷指令”App → 点右上角“+”新建快捷指令 → 命名为“接屏关机”。
第二步:点击“添加操作” → 搜索并添加“运行脚本” → 选择“Shell” → 在脚本框中粘贴以下命令:
if [ $(system_profiler SPDisplaysDataType | grep -c "Resolution:") -gt 1 ]; then sudo shutdown -h 23:00; else echo "未检测到外接显示器,不启用定时关机"; fi
这行脚本会实时统计显卡输出的“Resolution:”行数,内置Retina屏算1路,每多一个外接显示器就+1;只有总数≥2时才执行关机设定。若只连笔记本屏(1路),命令直接退出不生效。
第三步:点击右上角“…”,开启“允许运行不受信任的快捷指令” → 返回主界面,长按刚建的“接屏关机”快捷指令 → 选择“添加到主屏幕”。
第四步:每次连接好显示器后,手动点一次这个桌面图标即可激活当日23:00关机计划——它不会自动监听热插拔,但操作只需1秒,比反复设置更可靠。
用终端命令设置基础关机,再靠AppleScript动态开关
如果你希望完全自动化、无需手动点图标,需分两步:先预设关机任务,再用脚本根据显示器状态启停它。
方法一:预设每日关机(不立即生效)
打开“终端”,输入:【sudo pmset repeat shutdown MTWRFSU 23:00:00】 → 回车 → 输入管理员密码。此时任务已注册但尚未激活。
方法二:创建显示器状态监听脚本
在终端中执行:nano ~/monitor_toggle.sh → 粘贴以下内容:
#!/bin/zsh
if [ $(system_profiler SPDisplaysDataType | grep -c "Resolution:") -gt 1 ]; then
sudo pmset repeat cancel
sudo pmset repeat shutdown MTWRFSU 23:00:00
else
sudo pmset repeat cancel
fi
按Ctrl+O保存 → 回车确认文件名 → Ctrl+X退出编辑器。
方法三:赋予执行权限并设为开机自启
继续在终端输入:chmod +x ~/monitor_toggle.sh → 再输入:launchctl load -w ~/Library/LaunchAgents/com.user.monitor.plist(需先创建对应plist文件)。
⚠️ 注意:plist文件必须声明KeepAlive和WatchPaths指向/usr/bin/system_profiler或使用StartInterval轮询,否则无法实时响应显示器插拔。此步骤需手动编写XML,易出错,建议新手跳过直接用第一种方法。
图形界面方案(仅作参考,实际不满足需求)
系统设置里的“调度”功能完全无法识别显示器连接状态,所有设置均为全局生效。
点击苹果菜单 → “系统设置” → 左侧选“电池”或“节能器” → 点“定时” → 勾选“关机”并设23:00 → 选“每天” → 点“好”。
该设置一旦启用,无论是否接显示器都会执行,【无法实现‘仅连接显示器时关机’这一核心诉求】。

















