У меня чертовски много времени получается, как cron-подобное планирование скрипта FileMaker с использованием launchd на OS X 10.4.11.(Я описал свои ранние проблемы на serverfault .) Сначала я подумал, что проблема в том, что скрипт FileMaker открывает графический интерфейс, который, по-видимому, является верботеном для LaunchDaemon.Затем я вместо этого сделал его LaunchAgent, которому разрешено использовать ресурсы управления окнами, но он по-прежнему не нужен.
Вот список вещей, которые не имеют смысла:
Если вы используете launchctl для запуска задачи после того, как загрузили ее вручную, то все работает нормально.
sudo launchctl start my.script.name
Если вы выберете StartInterval, который будет через несколько минут (в отличие от нескольких часов в будущем), а затем загрузите .plist, все работает.(Сначала я подумал, что это может быть как-то связано с хранителем экрана - когда ss выполняется, что-то собирается мусором или что-то в этом роде; но, похоже, работает, если это запланировано даже после запуска ss, если это не так.слишком далеко в будущем.)
Я обернул вызов программы FileMaker внутри сценария оболочки, который, помимо выполнения программы FileMaker, также записывал метку времени в файл журнала.Прочитав этот файл журнала, я могу убедиться, что да, скрипт оболочки действительно был запущен launchd в соответствующее время.Или, по крайней мере, почти, потому что:
Журнал показывает что-то странное: если я запланирую запуск сценария в 8:08 вечера, я получу два выполнения, несколько секунд друг от другадругое:
[вторник, 24 января 20:07:57 CST 2012] Выполнение скрипта!
[вт, 24 января 20:08:00 CST 2012] выполнение скрипта!
Я как бы нахожусь в конце своей веревки - я прочитал соответствующие справочные страницы, технические документы Apple, другие статьи на сайтах StackExchange.Я действительно сделал свою домашнюю работу, насколько я могу.Любой, кто мог бы помочь мне, имел бы какую-то серьезную карму на своем пути.
И, черт возьми, опять же, вот .plist с некоторыми отредактированными фразами (определение XML, информация о регистрации).(Помните, это работает при загрузке вручную, так что я знаю, что с самим списком в порядке.)
<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>