语音控制调用AppleScript重启Mac触发无限重启循环如何解决
无限重启根因
原始脚本触发无限重启循环的核心原因有两点:
- 系统收到重启指令后不会立刻终止Voice Control进程,重启流程执行的数秒内,Voice Control仍保持麦克风监听状态,很容易把重启过程的系统音效、环境杂音误识别成预设触发词,重复调用绑定脚本
- 原始脚本没有做单次执行限制,每次被误触发都会重新发送重启指令,打断正在进行的重启流程,最终形成死循环
稳定可用的替代AppleScript方案
方案通过临时锁文件阻断重复触发逻辑,不会修改Voice Control的常驻设置,锁文件存放在系统临时目录,重启后会被自动清理,不影响后续功能使用:
-- 定义锁文件存放路径,使用系统临时目录,重启自动清空 set lockFilePath to "/tmp/voice_control_restart.lock" tell application "System Events" -- 检测到锁文件说明重启流程已触发,直接退出脚本避免重复执行 if exists file lockFilePath then return end if -- 第一时间创建锁文件,标记重启流程已启动 make new file at folder "/tmp" with properties {name:"voice_control_restart.lock"} end tell -- 短延迟确保锁文件写入磁盘完成 delay 0.5 -- 执行重启:加without saving参数会自动跳过未保存文档的确认弹窗,不需要可直接删除该参数 tell application "System Events" restart without saving end tell
使用注意事项
- 触发词尽量设置为3个音节以上、日常对话极少出现的表述,进一步降低非主动触发的概率
- 如果需要保留未保存文档的确认步骤,删掉脚本中
restart后的without saving即可,系统会正常弹出提示,待你确认后再完成重启
内容的提问来源于stack exchange,提问作者zebonaut smith
相关产品推荐
相关产品推荐

