Я использую клиенты 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
списки.Я просмотрел много «учебников» и еще много чего о том, как составить список для выполнения простых сценариев на основе часов.Проблема большинства этих руководств заключается в том, что они не говорят, что делать после того, как вы создали список.Вот мой пример 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 при необходимости)