【发布时间】:2014-01-26 03:07:34
【问题描述】:
我对 OSX shell 编程非常陌生(所以要温柔)但是我是计算机科学专业的毕业生(尽管 15 年前!)所以围绕 unix 系统进行编程对我来说并不是什么新鲜事。
我一直想知道为什么我在 /Library/LaunchDaemons/ 中的 plist 没有运行。我花了半天的时间来追寻那些没有去任何地方的松散的东西,因此我在这里发帖给你们这些好人。
下面是我非常简单的 plist。请注意,“MyApp”只是一个苹果脚本,(目前)只是通过 shell 命令“killall”终止并重新加载特定的应用程序。这部分工作得很好(即,当我在查找器中双击它时,所需的应用程序确实会终止并重新加载,并且当我单击“编译”和“运行”时也可以从 AppleScript 编辑器中)。仅供参考,我还设置了这个applescript,现在每次调用它时都会将时间/日期戳写入日志文件,以便在调用它时让我清楚......
....而且它永远不会自动发生!
我唯一可以让它运行的时候是我:
a) 在 finder 中双击 MyApp。
b) 从 applescript 编辑器中“运行”它
c) 命令提示符:'launchctl start MyApp'
我通过我的日志文件上的“tail -f”确认脚本确实由上述任何一个运行,并密切关注控制台输出.....
然而,我真正想要的是:
d) 让它在启动时自动运行,然后每隔一小时调用一次。
这是我的 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>MyApp</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/MyApp.app/Contents/MacOS/applet</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>WorkingDirectory</key>
<string>/Applications/MyApp.app/Contents/MacOS/</string>
</dict>
</plist>
这里是目录权限
iMac:LaunchDaemons keiran_harris$ ls -las
total 24
0 drwxr-xr-x 5 root wheel 170 25 Jan 19:38 .
0 drwxr-xr-x+ 64 root wheel 2176 24 Jan 12:19 ..
16 -r--r--r--@ 1 root wheel 732 26 Jan 13:32 MyApp.plist
有人知道我到底做错了什么吗?
我会很感激的。
提前感谢大师!
基兰。
PS> 已在此论坛中仔细检查了其他类似问题,但无济于事:
VERY simple Launchd plist not running my script
launchd file runs manually but not automatically
My mac osx launched plist won't run
【问题讨论】: