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