Macos 启动任务在计算机重新启动时卸载

Macos 启动任务在计算机重新启动时卸载,macos,shell,restart,launchd,launch-daemon,Macos,Shell,Restart,Launchd,Launch Daemon,我有一个简单的launchd plist文件,用于运行设计用于重新启动计算机的shell脚本: <?xml vesion="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> <

我有一个简单的launchd plist文件,用于运行设计用于重新启动计算机的shell脚本:

<?xml vesion="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.sag95.restartscript</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/sag95/Desktop/Scripts/restartscript.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>
它出现在列表中(启动CTL列表)。目前我有plist文件,每5分钟运行一次脚本。加载5分钟后,第一次调用脚本,然后重新启动计算机。登录后,launchd plist文件不再在列表中(launchctl列表)。我等了30分钟,但它没有再次运行以重新启动我的计算机


我的问题是,为什么在重新启动/强制重新启动后卸载com.sag95.restartscript plist文件?

launchctl load
仅为当前会话加载它。下次登录时,它将从
/System/Library/LaunchAgents/*.plist
/Library/LaunchAgents/*.plist
/Users/sag95/Library/LaunchAgents/*.plist
加载您的启动代理列表。如果文件不在这些文件夹中,则不会加载


假设您希望仅在登录时运行该文件,请将该文件放置在
/Users/sag95/Library/LaunchAgents
中。如果您想让它为任何登录的用户运行,请将其放入
/Library/LaunchAgents
中(但使用此特定脚本,密码将仅适用于您的帐户,因此这将不会有用)。

谢谢您的回答!无论何时系统启动,是否都要运行它?如果用户先登录后退出,是否仍会加载?抱歉,我对这个工具还是新手。@sag.95听起来您想将它作为启动守护程序而不是启动代理加载。不同之处在于代理在用户会话中以登录用户的身份运行,而守护进程在系统上下文中运行,与登录用户无关(如果有),并且通常以root用户的身份运行(这使得
sudo
不必要/不相关)。要将其作为守护进程加载到当前引导中,请使用
sudo launchctl load
。要让它在下次计算机启动时自动加载,请将其放入/Library/LaunchDaemons,并确保该文件归root所有,组为wheel,权限为644.@sag.95 BTW,如果将其设置为启动守护程序,将使系统在某些方面难以使用。例如,如果您需要安装系统更新,并且系统在中途重新启动,则可能是。。。糟糕。您可以在计算机启动时按住shift键,从/Library/Launch*文件夹中临时禁用守护进程(和代理程序),这将调用。感谢您的帮助。我之所以这么做,是因为我的最终目标是让我的客户机的所有mac电脑每晚重新启动,这样中央服务器就可以成功更新。我将安排重新启动最终在凌晨的某个时候进行,比如每天凌晨2点。您认为这是个好主意吗?@sag.95强制重新启动有点危险,因为您不知道计算机上发生了什么。最常见的问题是,有人打开了一个文档,但未保存更改;如果强制重新启动,它们的编辑将丢失。在某些系统操作的中间重新启动将不太常见,但可能带来灾难性的后果。所以我不能真的推荐它。
echo <password> | sudo -S shutdown -r now
launchctl load com.sag95.restartscript.plist