我正在尝试让脚本每天同时运行以重新启动 Mac。我无法使用节能首选项面板中的内置计划功能,因为我正在运行阻止正常重启的应用程序。如果我通过终端中的命令启动重新启动,shutdown它将强制重新启动,无论哪些应用程序可能会阻止它。
我对 shell 脚本和 launchd 非常陌生,所以我真的是一个新手级别,所以请记住这一点。这是我在这里发表的第一篇文章,但多年来我定期访问并通常找到我正在寻找的答案。
在尝试了各种事情之后,我遇到了一些障碍。我所在的位置是 /Library/LaunchDaemons 文件夹中有一个 .plist 文件,该文件指向应在特定时间运行的脚本。我最初尝试使用在线教程中找到的代码在 bbedit 中编写 .plist 文件。它总是无法加载到 launchctl (手动或通过重新启动)。然后我尝试使用 Xcode 中的 plist 编辑器,效果似乎更好。
完成此操作后,plist 将加载到 launchctl 中。它似乎还尝试在指定时间运行脚本。我查看了控制台,Mac 似乎确实尝试运行该脚本,但失败并出现以下错误:
com.apple.xpc.launchd[1] (com.apple.restart.sh[940]): 服务退出并出现异常代码: 1
我尝试直接从终端运行脚本,例如sh scriptname,Mac 重新启动。
这是脚本:
#!/bin/bash
shutdown -r now
Run Code Online (Sandbox Code Playgroud)
我将脚本保存在 /Library/Scripts 文件夹中。
这是 .plist 的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.apple.restart.sh</string>
<key>Program</key>
<string>/Library/Scripts/com.apple.restart.sh</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>50</integer>
</dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我现在真的不知道出了什么问题,因为 .plist 似乎已成功加载到 launchctl 中,并且脚本尝试在指定时间运行但失败了。如果手动运行该脚本,它就可以工作。 …