launchd агент запуска не выполняет команду
Я использую клиенты Skype и Adium на своем Mac на работе. У меня есть два сценария (Ruby, если это имеет значение), start_chats
а также kill_chats
что запустить / убить оба приложения. Эти сценарии являются исполняемыми и отлично работают из командной строки. Я использовал cron в Snow Leopard для запуска этих сценариев в запланированное время: start_chats
в 8:00, когда я захожу в свой офис, и kill_chats
убить их (таким образом, выводя меня из всех подключенных учетных записей) в 6:00 (18:00) после того, как я покину свой офис.
Так как недавно у меня появилась новая машина с Lion, cron работает очень ненадежно и чаще всего не выполняет свои задания вообще (у меня есть другие задания в том же crontab). Итак, пытаясь идти в ногу с технологиями, я решил, что я попытаюсь переделать это, используя launchd
plists. Я просмотрел множество "учебных пособий" и еще много чего о том, как составить список для выполнения простых сценариев на основе часов. Проблема большинства этих руководств заключается в том, что они не говорят, что делать после того, как вы создали список. Вот мой образец kill_chats
plist (построен с помощью этого поста):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.me.kill_chats</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/me/bin/kill_chats</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>18</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
Да, это называется local.me.kill_chats.plist
и я положил его в свой ~/Library/LaunchAgents/
каталог. Обратите внимание, что я также пытался использовать Program
ключ, но это тоже не сработало. Если я бегу
$> launchctl load ~/Library/LaunchAgents/local.me.kill_chats.plist
он говорит, что список уже загружен, и я действительно вижу его в
$> launchctl list | egrep kill_chats
- 0 local.me.kill_chats
Но когда мои системные часы бьют время, указанное в списке, мой kill_chats
скрипт не запускается Конечно, я не жду до 18:00, чтобы каждый раз проверять его, поэтому я изменяю его на несколько минут раньше текущего времени, но сценарий по-прежнему не выполняется. Я даже попробовал Lingon (более старая, бесплатная версия), но, похоже, ничего не работает.
Я делаю что-то неправильно? Что-то не так с моим списком? Как я уже сказал, я просмотрел кучу разных сайтов (даже многочисленные сообщения от Stackexchange), и мой список кажется правильным. Я просто не уверен, как заставить это "использовать" мой список. Любая помощь будет принята с благодарностью.
(Примечание: администраторы, не стесняйтесь перенести это в Apple или Superuser при необходимости)