У меня чертовски время, когда вы планируете cron-подобный расписание скрипта FileMaker, используя launchd на OS X 10.4.11. (Я описал свои ранние мучения в serverfault.) Сначала я подумал, что проблема заключается в том, что скрипт FileMaker открывает графический интерфейс, который, похоже, является verboten для LaunchDaemon. Затем я сделал его LaunchAgent вместо этого, которому разрешено использовать ресурсы для окон, и все равно не идти.LaunchAgent открытие скрипта FileMaker
Вот список вещей, которые не имеют никакого смысла:
Если вы используете launchctl, чтобы запустить задачу после того, как вы загрузили его вручную, то все работает отлично.
sudo launchctl start my.script.name
При выборе StartInterval, который несколько минут в будущем (в отличие от нескольких часов в будущем), а затем загрузить .plist, все работает. (Я подумал, что сначала это могло быть связано с заставкой так или иначе - что когда ss выполняется, что-то получает сбор мусора или что-то в этом роде, но, похоже, это работает, если он запланирован даже после того, как ss запущен, если это не слишком далеко в будущем.)
Я завернул вызов программы FileMaker внутри скрипта оболочки, который, помимо выполнения программы FileMaker, также написал временную метку в файле журнала. Из чтения этого файла журнала я могу убедиться, что да, сценарий оболочки действительно был вызван launchdd в соответствующее время. Или, по крайней мере, почти, потому что:
В журнале что-то странное: если я запланировать сценарий, который будет запущен в 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>
Пара мыслей:. 1: Может FileMaker быть заняты чем-то еще, когда ты сценарий и, следовательно, не отвечает? 2: Является ли база данных, которую вы хотите использовать, еще открыта, и если это так, это все еще активная база данных в FileMaker? 3: Вы пытались автоматизировать с помощью предупреждений iCal? 4: FileMaker setup? FM Pro/Advanced? FM-сервер? Общий файл? Один пользовательский файл? – pft221
Спасибо за ответ. # 1: Нет, с возможным исключением, что множественные запуски заставляют его прерывать себя и, следовательно, закручивать вещи. Я подумаю об этом. # 2: запуск скрипта делает подходящий активна база данных.# 3: У меня нет, но это может произойти. Я хотел сделать вещи благосклонно, но я быстро теряю терпение. # 4: FM Pro. Что касается остальных, я не уверен. Ожидаете ли вы разных поведений в этих разных случаях, в ситуации, когда никто другой не работает на основе FM? – shanusmagnus
# 4: Если никто другой не работает FM, то обычно. – pft221