Подтвердить что ты не робот

Как настроить задачу так часто?

Как мне запустить script каждый, скажем, 30 минут? Я предполагаю, что для разных ОС существуют разные способы. Я использую OS X.

4b9b3361

Ответ 1

Просто используйте launchd. Это очень мощная система запуска, и тем временем это стандартная система запуска для Mac OS X (текущая версия OS X даже не загрузится без нее). Для тех, кто не знаком с launchd (или с OS X вообще), он похож на метрику между init, cron, at, SysVinit (init.d), inetd, upstart и systemd. Заимствование концепций всех этих проектов, но также предлагающих вещи, которые вы, возможно, не найдете в других местах.

Каждая служба/задача является файлом. Местоположение файла зависит от вопросов: "Когда эта служба должна работать?" и "Какие привилегии будут нужны службе?"

Системные задачи перейдите к

/Library/LaunchDaemons/

если они будут запускаться, независимо от того, зарегистрирован ли пользователь в системе или нет. Они будут начинаться с привилегий "root".

Если они будут выполняться только в том случае, если пользователь любой зарегистрирован, они переходят к

/Library/LaunchAgents/

и будет выполняться с привилегиями пользователя, который только что вошел в систему.

Если они будут запускаться только в том случае, если вы вошли в систему, они переходят к

~/Library/LaunchAgents/

где ~ - ваш каталог HOME. Эта задача будет выполняться с вашими привилегиями, так же, как если бы вы запустили их самостоятельно по командной строке или дважды щелкнув файл в Finder.

Обратите внимание, что существует также /System/Library/LaunchDaemons и /System/Library/LaunchAgents, но, как обычно, все под /System управляется OS X. Вы не должны размещать там какие-либо файлы, вы не должны менять файлы там, если вы действительно знайте, что вы делаете. Прошивка в папке "Системы" может сделать вашу систему непригодной (переведите ее в состояние, когда она даже откажется загрузиться снова). Это каталоги, в которых Apple размещает задачи launchd, которые запускают и запускают вашу систему во время загрузки, автоматически запускают службы по мере необходимости, выполняют задачи обслуживания системы и т.д.

Каждая задача launchd есть файл в формате plist. Он должен иметь обратную регистрацию имени домена. Например. вы можете назвать свою задачу

com.example.my-fancy-task.plist

Этот plist может иметь различные параметры и настройки. Написание одного на руку субоптимально, вы можете получить бесплатный инструмент Lingon для создания своих задач. Этот инструмент обычно был бесплатным, теперь он стоит 5 долларов в магазине приложений и 10 долларов США в качестве версии магазина для не-приложений (версия магазина для нетрадиционных приложений намного эффективнее, и если вы уже планируете заплатить за это, серьезно, получите не-магазин приложений версия). Если кто-то знает сравнимый инструмент, который является бесплатным или открытым исходным кодом, напишите мне в комментариях, и я скорее рекомендую его (не хочу рекламировать здесь коммерческое программное обеспечение).

Как пример, он может выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.my-fancy-task</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/usr/local/bin/my-script.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>
</dict>
</plist>

Этот агент будет запускать оболочку script/usr/local/bin/my-script.sh каждые 1800 секунд (каждые 30 минут). Вы также можете запускать задание в определенные даты/время (в основном, запуск может делать все, что может сделать cron), или вы даже можете отключить "OnDemand", заставляя launchd поддерживать постоянный процесс (если он завершает работу или сбой, launchd немедленно перезапустит его), Вы можете даже ограничить количество ресурсов, которые может использовать процесс (как было сказано ранее, Lingon показывает все эти настройки в приятном интерфейсе пользовательского интерфейса).

Обновление: Несмотря на то, что OnDemand по-прежнему поддерживается, он устарел. Новая настройка называется KeepAlive, что имеет гораздо больший смысл. Он может иметь логическое значение, и в этом случае это полная противоположность OnDemand (установка его в false ведет себя так, как если бы OnDemand был true и наоборот). Новая новая функция - это то, что она также может иметь значение словаря, а не логическое. Если у него есть значение словаря, у вас есть несколько дополнительных опций, которые дают вам более точное управление зерном, при каких обстоятельствах задача должна оставаться в живых. Например. он сохраняется только до тех пор, пока программа заканчивается кодом выхода из нуля, только до тех пор, пока существует определенный файл/каталог на диске, только если другая задача также жива или только если сеть в настоящий момент работает.

Также вы можете вручную включать/отключать задачи через командную строку:

launchctl <command> <parameter>

может быть загружена или выгружена, чтобы загрузить plist или выгрузить его снова, и в этом случае параметр - это путь к файлу. Или команда может быть запущена или остановлена, чтобы просто запустить или остановить такую ​​задачу, и в этом случае параметр является меткой (com.example.my-fancy-task). Существуют и другие команды и опции.

Смотрите документацию Apple в формате plist и launchctl инструмент командной строки(обратите внимание, что вы можете выбрать версию OS X сверху, так как формат/параметры различаются для разных выпусков OS X)

Ответ 2

вы можете использовать очень удобный генератор plist: http://launched.zerowidth.com/ (ничего не нужно покупать...)

он предоставит вам оболочку с одним слоем для регистрации нового запланированного задания с уже рекомендованным запуском

Ответ 3

В MacOSX у вас есть как минимум следующие опции:

  • Повторяющийся аварийный сигнал iCal с действием "Run Script"
  • launchd
  • cron (link1, link2)

Из личного опыта, cron является самым надежным. Когда я тестировал, у запуска был ряд ошибок и причуд. Аварии iCal запускаются только при входе в систему (но это может быть что-то, что вы предпочитаете).

Ответ 4

Как отметил Мекки, launchd будет способ пойти с этим. Там есть интерфейс GUI для запуска, называемый Lingon, который вы можете проверить, а не вручную редактировать файлы запуска:

Lingon - графический пользовательский интерфейс для создания редактирования файлы конфигурации для Mac OS X Leopard 10.5.

[надрез...]

Редактирование файла конфигурации проще, чем когда-либо в этой версии и он имеет два разных режима. Основной режим, который имеет наиболее распространенный настройки легко доступны в очень простом интерфейсе и в режиме эксперта где вы можете добавить все настройки либо непосредственно в текст, либо вставить их через меню.

Ответ 5

MAC OS имеет инструмент Automator, который такой же, как и в планировщике задач в Windows. А с помощью Automator вы можете ежедневно планировать задачи и связывать задачу с повторяющимся событием календаря, чтобы ежедневно запускать сценарии в указанное время. обратитесь к ссылке для ежедневного запуска скриптов в Mac OS

Ответ 6

Для сценариев Apple я настраиваю специальный календарь iCal и использую аварийные сигналы для их периодического запуска. Для инструментов командной строки я использую launchd.

Ответ 7

FYI: пока я так скучаю по siplicity, cron ушел в прошлое на OS X. Он был сторожевым псом на пантера. С Тигром он был запущен. Поэтому, если вы используете Leopard cron, это не вариант.