macos 中可用 applescript 调用 sudo shutdown 实现定时重启或关机,需配置 sudoers 免密权限;交互式脚本支持用户输入分钟数,进阶方案推荐用 launchd 实现后台定时任务。
macos 自带的 shutdown 命令配合 applescript 可以实现定时重启或关机,但需注意权限、用户会话和系统策略限制。直接用 applescript 调用 shell 命令是最可靠的方式,无需额外工具。
基础命令:用 do shell script 执行 shutdown
AppleScript 本身不提供原生定时关机功能,必须调用系统命令。关键命令如下:
-
sudo shutdown -r now:立即重启(需管理员密码) -
sudo shutdown -h now:立即关机 -
sudo shutdown -r +30:30 分钟后重启 -
sudo shutdown -h 23:45:当天 23:45 关机(24 小时制)
⚠️ 注意:shutdown 必须用 sudo,且脚本运行时需有 root 权限。普通 AppleScript 应用无法后台静默执行 sudo,需提前配置免密或使用 launchd 辅助。
免密码执行:配置 sudoers(推荐方式)
为避免每次弹窗输密码,可为当前用户添加无密码 shutdown 权限:
- 终端执行
sudo visudo - 在文件末尾添加一行(将
yourusername替换为你的用户名):yourusername ALL=(ALL) NOPASSWD: /sbin/shutdown - 保存退出(vi 中按
Esc→ 输入:wq→ 回车)
此后 AppleScript 中的 do shell script "sudo shutdown -r +10" 就不会卡住等待密码。
查询苹果健康当日数据,分析身体状况是否适合锻炼,给出四档建议(重度/中度/轻度/建议休息)并附详细说明。使用 Python 处理数据。
封装成可运行的 AppleScript
以下是一个带简单确认的定时重启脚本(保存为 .scpt 文件,双击运行):
display dialog "设置多少分钟后重启?" default answer "10"
set mins to text returned of result
try
set cmd to "sudo shutdown -r +" & mins
do shell script cmd
display notification "已安排 " & mins & " 分钟后重启" with title "定时重启"
on error
display alert "执行失败,请检查 sudoers 配置或输入是否为数字"
end try
如需关机,把 -r 改成 -h 即可。脚本支持交互输入,也适合转成菜单栏小工具或快捷键触发。
进阶:用 launchd 实现真正后台定时任务
若需每天固定时间自动执行(如凌晨 2 点关机),AppleScript 本身不适合长期驻留,应搭配 launchd:
- 写一个 shell 脚本(如
/usr/local/bin/auto-shutdown.sh),内容为#!/bin/bash; sudo shutdown -h 2>/dev/null - 创建 plist 文件(如
~/Library/LaunchAgents/local.auto-shutdown.plist),定义StartCalendarInterval指定时间 - 运行
launchctl load ~/Library/LaunchAgents/local.auto-shutdown.plist
这样系统登录后就会按时触发,不依赖 AppleScript 运行环境,更稳定可靠。










