2012-01-25 3 views
0

У меня чертовски время, когда вы планируете cron-подобный расписание скрипта FileMaker, используя launchd на OS X 10.4.11. (Я описал свои ранние мучения в serverfault.) Сначала я подумал, что проблема заключается в том, что скрипт FileMaker открывает графический интерфейс, который, похоже, является verboten для LaunchDaemon. Затем я сделал его LaunchAgent вместо этого, которому разрешено использовать ресурсы для окон, и все равно не идти.LaunchAgent открытие скрипта FileMaker

Вот список вещей, которые не имеют никакого смысла:

  1. Если вы используете launchctl, чтобы запустить задачу после того, как вы загрузили его вручную, то все работает отлично.

    sudo launchctl start my.script.name

  2. При выборе StartInterval, который несколько минут в будущем (в отличие от нескольких часов в будущем), а затем загрузить .plist, все работает. (Я подумал, что сначала это могло быть связано с заставкой так или иначе - что когда ss выполняется, что-то получает сбор мусора или что-то в этом роде, но, похоже, это работает, если он запланирован даже после того, как ss запущен, если это не слишком далеко в будущем.)

  3. Я завернул вызов программы FileMaker внутри скрипта оболочки, который, помимо выполнения программы FileMaker, также написал временную метку в файле журнала. Из чтения этого файла журнала я могу убедиться, что да, сценарий оболочки действительно был вызван launchdd в соответствующее время. Или, по крайней мере, почти, потому что:

  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> 
+0

Пара мыслей:. 1: Может FileMaker быть заняты чем-то еще, когда ты сценарий и, следовательно, не отвечает? 2: Является ли база данных, которую вы хотите использовать, еще открыта, и если это так, это все еще активная база данных в FileMaker? 3: Вы пытались автоматизировать с помощью предупреждений iCal? 4: FileMaker setup? FM Pro/Advanced? FM-сервер? Общий файл? Один пользовательский файл? – pft221

+0

Спасибо за ответ. # 1: Нет, с возможным исключением, что множественные запуски заставляют его прерывать себя и, следовательно, закручивать вещи. Я подумаю об этом. # 2: запуск скрипта делает подходящий активна база данных.# 3: У меня нет, но это может произойти. Я хотел сделать вещи благосклонно, но я быстро теряю терпение. # 4: FM Pro. Что касается остальных, я не уверен. Ожидаете ли вы разных поведений в этих разных случаях, в ситуации, когда никто другой не работает на основе FM? – shanusmagnus

+0

# 4: Если никто другой не работает FM, то обычно. – pft221

ответ

0

ли вы должны использовать для этого запуск программ?

Я использую встроенный в Cron объекта (через CronniX GUI, чтобы открыть локальный файл FileMaker, который затем запускает скрипт на нашем сервере FileMaker

+0

Это хороший момент. Дайте-ка подумать. – shanusmagnus