1

我在 OS X 10.4.11 上使用 launchd 对 FileMaker 脚本进行类似 cron 的调度,这真是太棒了。(我在serverfault描述了我早期的工作经历。)起初我认为问题在于 FileMaker 脚本打开了一个 GUI,这对于 LaunchDaemon 来说似乎是禁止的。然后我把它改成了一个 LaunchAgent,它允许使用窗口资源,但仍然不行。

以下是一些没有意义的事情的清单:

  1. 如果您在手动加载任务后使用 launchctl 启动任务,那么一切正常。

    sudo launchctl start my.script.name

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

  3. 我将 FileMaker 程序的调用封装在一个 shell 脚本中,该脚本除了执行 FileMaker 程序外,还将时间戳写入日志文件。通过阅读这个日志文件,我可以验证,是的,shell 脚本确实是由 launchd 在适当的时间调用的。或者至少,几乎,因为:

  4. 日志显示了一些奇怪的东西:如果我安排在晚上 8:08 启动脚本,我会执行两次,彼此相隔几秒钟:

    [Tue Jan 24 20:07:57 CST 2012] 执行脚本!

    [Tue Jan 24 20:08:00 CST 2012] 执行脚本!

我已经走到了尽头——我已经阅读了相关的联机帮助页、Apple 技术文档以及 StackExchange 站点上的其他文章。我真的尽我所能完成了我的功课。任何可以帮助我的人都会有一些严重的因果报应。

再说一次,这里是 .plist,其中一些杂乱无章(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>
4

1 回答 1

0

你必须为此使用launchd吗?

我使用内置的 Cron 工具(通过CronniX GUI 打开本地 FileMaker 文件,然后在我们的 FileMaker 服务器上运行脚本。

于 2012-01-25T17:29:43.517 回答