计算机重新启动时启动的任务卸载
Launchd task unloads when computer restarts
我有一个简单的 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 列表)。目前,我每 5 分钟就有一个 运行 脚本的 plist 文件。加载 5 分钟后,第一次调用脚本并随后重新启动计算机。登录后,launchd plist 文件不再在列表中(launchctl 列表)。我等了 30 分钟,它还没有 运行 再次重新启动我的计算机。
我的问题是为什么 com.sag95.restartscript plist 文件在 restart/force 重启后卸载?
launchctl load
仅为当前会话加载它。下次您登录时,它会从 /System/Library/LaunchAgents/*.plist
、/Library/LaunchAgents/*.plist
和 /Users/sag95/Library/LaunchAgents/*.plist
加载您的启动代理列表。如果文件不在这些文件夹之一中,则不会加载。
假设您希望它仅在 您 登录时才 运行,请将文件放在 /Users/sag95/Library/LaunchAgents
中。如果您希望它为任何已登录用户设置 运行,请改为将其设置为 /Library/LaunchAgents
(但使用此特定脚本,密码将仅对您的帐户有效,因此这不会有用)。
我有一个简单的 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 列表)。目前,我每 5 分钟就有一个 运行 脚本的 plist 文件。加载 5 分钟后,第一次调用脚本并随后重新启动计算机。登录后,launchd plist 文件不再在列表中(launchctl 列表)。我等了 30 分钟,它还没有 运行 再次重新启动我的计算机。
我的问题是为什么 com.sag95.restartscript plist 文件在 restart/force 重启后卸载?
launchctl load
仅为当前会话加载它。下次您登录时,它会从 /System/Library/LaunchAgents/*.plist
、/Library/LaunchAgents/*.plist
和 /Users/sag95/Library/LaunchAgents/*.plist
加载您的启动代理列表。如果文件不在这些文件夹之一中,则不会加载。
假设您希望它仅在 您 登录时才 运行,请将文件放在 /Users/sag95/Library/LaunchAgents
中。如果您希望它为任何已登录用户设置 运行,请改为将其设置为 /Library/LaunchAgents
(但使用此特定脚本,密码将仅对您的帐户有效,因此这不会有用)。