我有时间在OS X 10.4.11上使用launchd获得类似cron的调度FileMaker脚本。 (我在serverfault上描述了我的早期难题。)起初,我认为问题在于FileMaker脚本打开了一个GUI,这似乎是LaunchDaemon的一个限制。然后,我将它变成了LaunchAgent,它允许使用窗口资源,但仍然无法执行。LaunchAgent打开FileMaker脚本
这有一个没有任何意义的事情的清单:
如果使用launchctl命令来启动你的手加载后的任务,然后一切工作正常。
sudo launchctl start my.script.name
如果选择StartInterval那就是在未来的几分钟内(而不是几个小时以后),然后加载的.plist,一切正常。 (我认为起初这可能与屏幕保护程序有关 - 当ss执行时,某些东西会被垃圾回收或者其他东西;但是如果它在ss启动之后被调度,它似乎也可以工作,只要它不是)
我将Shell中的FileMaker程序的调用封装在一个shell脚本中,除了执行FileMaker程序之外,它还向日志文件写入了一个时间戳。从阅读这个日志文件我可以验证,是的,shell脚本确实是在适当的时候由launchd调用的。或至少差不多,这是因为:
日志显示一些奇怪的事情:如果我安排在下午8时08分要启动的脚本,我得到两次执行,几秒钟彼此分开:
[星期二1月24日20:07:57 CST 2012]执行脚本!
[Tue Jan 24 20:08:00 CST 2012]执行脚本!
我在绳子的一端是那种在这里 - 我读过的有关手册页,苹果的技术文档,在StackExchange网站的其他文章。尽我所能,我真的完成了功课。任何能够帮助我的人都会有一些以他们的方式出现的严重业力。
对于它的地狱,再次,这里是.plist与一些cruft(XML定义,日志信息)编辑出来。 (请记住,这个工程手动加载的时候,所以我知道的plist本身是好的。)
<plist version="1.0">
<dict>
<key>Label</key>
<string>shane.useragent.launcher</string>
<key>ProgramArguments</key>
<array>
<string>/Users/shane/launchFM.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>8</integer>
</dict>
</dict>
</plist>
一对夫妇的想法:1:莫非的FileMaker是忙于做其他事情的时候你脚本并因此没有响应?2:您想要脚本的数据库是否仍然打开,如果是,它仍然是FileMaker中的活动数据库?3:您是否尝试过使用iCal警报进行自动化? FileMaker设置?FM Pro/Advanced?FM服务器?共享文件?单个用户文件? – pft221
感谢您的回应#1:否;可能的例外是多次启动导致它自行中断,从而导致事情发生。我会考虑这个问题。#2:运行脚本是合适的数据库活跃。#3:我没有,但可能会这样。我想以Apple的祝福的方式来做事,但我正在迅速失去耐心。 #4:FM Pro。至于其余的,我不确定。你会期望在这些不同情况下的不同行为,在没有其他人运行任何基于FM的东西的情况下? – shanusmagnus
#4:如果没有其他人正在运行FM,那么一般不会。 – pft221