为什么 LaunchAgents 运行 我的 Automator 应用程序没有?
Why won't LaunchAgents run my Automator app?
我想 运行 我每 5 分钟通过 Automator 创建的应用程序,所以我将以下 com.user.wilson.plist 文件放在这个文件夹中:
/Library/LaunchAgents
<?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.user.wilson</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-a</string>
<string>/Users/paul/Documents/Wilson/Script/mt-wilson-background_app</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
然后,我在终端中使用以下命令加载它:
launchctl load Library/LaunchAgents/com.user.wilson.plist
但由于某种原因,该应用程序从未 运行s。
但是,我可以使用此命令成功 运行 应用程序:
/usr/bin/open -a /Users/paul/Documents/Wilson/Script/mt-wilson-background_app
知道为什么 .plist 文件不符合我的预期吗?
为了查看出了什么问题,您可以像这样在您的 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.user.wilson</string>
<key>StandardErrorPath</key>
<string>/Users/paul/Documents/Wilson/Script/err.log</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-a</string>
<string>/Users/paul/Documents/Wilson/Script/mt-wilson-background_app</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
注意:为使修改生效,卸载并重新加载:
launchctl unload Library/LaunchAgents/com.user.wilson.plist
launchctl load Library/LaunchAgents/com.user.wilson.plist
通常,如果 err.log
说找不到您的应用,则表示这是一个权限问题。
我建议您尝试将您的应用程序从 /Users/paul/Documents/Wilson/Script/mt-wilson-background_app
移动到 /Users/paul/Documents/mt-wilson-background_app
然后相应地更新你的 plist,卸载并重新加载你的 plist,它现在工作得更好了吗?
我 运行 遇到了几乎完全相同的问题。我终于(终于!!!)找到了对我有用的治疗方法。
最初,无论我尝试什么都不会 运行 的 .plist 启动代理的损坏版本在 /Library/LaunchAgents 中。 将代理移动到 /Users/[me]/LaunchAgents 消除了“Application Not 运行”错误。
这似乎违反直觉,因为根代理应该能够从任何位置 运行 一切,但我只能猜测 AppleScript 检查应用程序是否 运行ning 是用户account-dependent 不知何故。我敢打赌,您可以在 AppleScript 中添加一些东西来以“正确”的方式实际解决这个问题,但这对我来说效果很好,所以我赢了。
我想 运行 我每 5 分钟通过 Automator 创建的应用程序,所以我将以下 com.user.wilson.plist 文件放在这个文件夹中:
/Library/LaunchAgents
<?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.user.wilson</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-a</string>
<string>/Users/paul/Documents/Wilson/Script/mt-wilson-background_app</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
然后,我在终端中使用以下命令加载它:
launchctl load Library/LaunchAgents/com.user.wilson.plist
但由于某种原因,该应用程序从未 运行s。
但是,我可以使用此命令成功 运行 应用程序:
/usr/bin/open -a /Users/paul/Documents/Wilson/Script/mt-wilson-background_app
知道为什么 .plist 文件不符合我的预期吗?
为了查看出了什么问题,您可以像这样在您的 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.user.wilson</string>
<key>StandardErrorPath</key>
<string>/Users/paul/Documents/Wilson/Script/err.log</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-a</string>
<string>/Users/paul/Documents/Wilson/Script/mt-wilson-background_app</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
注意:为使修改生效,卸载并重新加载:
launchctl unload Library/LaunchAgents/com.user.wilson.plist
launchctl load Library/LaunchAgents/com.user.wilson.plist
通常,如果 err.log
说找不到您的应用,则表示这是一个权限问题。
我建议您尝试将您的应用程序从 /Users/paul/Documents/Wilson/Script/mt-wilson-background_app
移动到 /Users/paul/Documents/mt-wilson-background_app
然后相应地更新你的 plist,卸载并重新加载你的 plist,它现在工作得更好了吗?
我 运行 遇到了几乎完全相同的问题。我终于(终于!!!)找到了对我有用的治疗方法。
最初,无论我尝试什么都不会 运行 的 .plist 启动代理的损坏版本在 /Library/LaunchAgents 中。 将代理移动到 /Users/[me]/LaunchAgents 消除了“Application Not 运行”错误。
这似乎违反直觉,因为根代理应该能够从任何位置 运行 一切,但我只能猜测 AppleScript 检查应用程序是否 运行ning 是用户account-dependent 不知何故。我敢打赌,您可以在 AppleScript 中添加一些东西来以“正确”的方式实际解决这个问题,但这对我来说效果很好,所以我赢了。