OSX(10.7.5)/ Library / LaunchDaemons / plist未运行

时间:2014-01-26 03:07:35

标签: macos plist launchd

我对OSX shell编程非常陌生(所以要温和)但是我是一名计算机科学大学毕业生(尽管15年前!)所以围绕unix系统进行编程对我来说并不是什么新鲜事。

我一直坚持为什么我的/ Library / LaunchDaemons /中的plist没有运行。我花了半天的时间追逐那些没有去过的松散的末端,因此我在这里发帖给你们。

我非常简单的plist在下面。请注意,“MyApp”只是一个苹果脚本(目前)只是终止并通过shell命令“killall”重新加载特定的应用程序。这部分工作正常(即当我在finder中双击它时,所需的应用程序确实终止并重新加载,并且当我点击“编译”和“运行”时也从AppleScript编辑器内部)。仅供参考我还设置了这个AppleScript,现在每次调用时都会在日志文件中写一个时间/日期戳,以便在调用它时向我说明....

....它永远不会自动!
我唯一能让它运行的时候是i:
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&GT;在这个论坛上仔细审查了其他类似的问题,但无济于事:
VERY simple Launchd plist not running my script
launchd file runs manually but not automatically
My mac osx launched plist won't run

1 个答案:

答案 0 :(得分:1)

AppleScripts只能作为Aqua(GUI)会话的一部分运行,而LaunchDaemons只能在系统上下文中运行,与GUI会话无关。您需要使用其他一些(非GUI依赖的)脚本技术(shell脚本可以工作)重写脚本,或者使用LaunchAgent(通常在用户GUI会话中运行)而不是守护进程。请参阅the Execution Context Summary section of Technical Note TN2083: Daemons and Agents - Bootstrap命名空间是相关列。