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 при необходимости)

0 ответов

Другие вопросы по тегам