2012-01-25 28 views
0

我有时间在OS X 10.4.11上使用launchd获得类似cron的调度FileMaker脚本。 (我在serverfault上描述了我的早期难题。)起初,我认为问题在于FileMaker脚本打开了一个GUI,这似乎是LaunchDaemon的一个限制。然后,我将它变成了LaunchAgent,它允许使用窗口资源,但仍然无法执行。LaunchAgent打开FileMaker脚本

这有一个没有任何意义的事情的清单:

  1. 如果使用launchctl命令来启动你的手加载后的任务,然后一切工作正常。

    sudo launchctl start my.script.name

  2. 如果选择StartInterval那就是在未来的几分钟内(而不是几个小时以后),然后加载的.plist,一切正常。 (我认为起初这可能与屏幕保护程序有关 - 当ss执行时,某些东西会被垃圾回收或者其他东西;但是如果它在ss启动之后被调度,它似乎也可以工作,只要它不是)

  3. 我将Shell中的FileMaker程序的调用封装在一个shell脚本中,除了执行FileMaker程序之外,它还向日志文件写入了一个时间戳。从阅读这个日志文件我可以验证,是的,shell脚本确实是在适当的时候由launchd调用的。或至少差不多,这是因为:

  4. 日志显示一些奇怪的事情:如果我安排在下午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> 
+0

一对夫妇的想法:1:莫非的FileMaker是忙于做其他事情的时候你脚本并因此没有响应?2:您想要脚本的数据库是否仍然打开,如果是,它仍然是FileMaker中的活动数据库?3:您是否尝试过使用iCal警报进行自动化? FileMaker设置?FM Pro/Advanced?FM服务器?共享文件?单个用户文件? – pft221

+0

感谢您的回应#1:否;可能的例外是多次启动导致它自行中断,从而导致事情发生。我会考虑这个问题。#2:运行脚本是合适的数据库活跃。#3:我没有,但可能会这样。我想以Apple的祝福的方式来做事,但我正在迅速失去耐心。 #4:FM Pro。至于其余的,我不确定。你会期望在这些不同情况下的不同行为,在没有其他人运行任何基于FM的东西的情况下? – shanusmagnus

+0

#4:如果没有其他人正在运行FM,那么一般不会。 – pft221

回答

0

你必须使用的launchd这个?

我使用内置的cron功能(通过CronniX GUI打开本地的FileMaker文件,然后运行我们的FileMaker服务器上的脚本

+0

这是一个很好的观点。让我看看。 – shanusmagnus