我有一个简单的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>
脚本文件是单行强制重启命令(真实文件中的密码,未放在此处):
echo <password> | sudo -S shutdown -r now
使用
加载plist文件后launchctl load com.sag95.restartscript.plist
它出现在列表中(launchctl列表)。目前我有plist文件每5分钟运行一次脚本。加载5分钟后,第一次调用脚本,然后重新启动计算机。登录后,launchd plist文件不再在列表中(launchctl列表)。我等了30分钟,它还没有再次运行来重启我的电脑。
我的问题是为什么重启/强制重启后com.sag95.restartscript plist文件会被卸载?
答案 0 :(得分:0)
launchctl load
仅为当前会话加载它。下次登录时,它会从/System/Library/LaunchAgents/.plist,/Library/LaunchAgents/.plist和/ Users / sag95 / Library / LaunchAgents / *加载您的启动代理列表的.plist。如果文件不在其中一个文件夹中,则不会加载。
假设您希望它仅在您登录时运行,请将文件放在/ Users / sag95 / Library / LaunchAgents中。如果您希望它为任何登录用户运行,请将其放在/ Library / LaunchAgents中(但是使用此特定脚本,密码将仅适用于您的帐户,因此这不会有用)。