OS X: есть встроенная программа-планировщик?

10

Я хотел бы запланировать задачу для выполнения с параметрами в определенное время / дату в будущем.

Включает ли OS X какой-либо такой инструмент (даже если это командная строка)? Если нет, есть ли бесплатные или относительно дешевые инструменты для этого?

glenneroo
источник

Ответы:

14

Хотя ответ KeithB является правильным, на самом деле, cron является устаревшим в пользу конкретного OS X launchd .

Команды для запуска launchdописаны в «списках» Apple или списках свойств, которые на самом деле являются просто файлами XML:

<?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.apple.periodic-daily</string>
    <key>ProgramArguments</key>
    <array> 
        <string>/usr/sbin/periodic</string>
        <string>daily</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartCalendarInterval</key>
    <dict>  
        <key>Hour</key>
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
</dict>
</plist>

Сказав это, это не очень удобный (и не похожий на Mac) способ планирования команд, которые будут выполняться. Этот вопрос о SuperUser перечисляет несколько альтернатив GUI, в том числе:

Lingon Screencap

Запущенный редактор ($ 5 Shareware)

Скриншот

мистифицировать
источник
3
Это несправедливая характеристика, что launchd является "проприетарным". Apple с готовностью открыл его на launchd.macosforge.org, и он был портирован на FreeBSD.
Омантика
@ohmantics: Хорошо, честно. Является ли «конкретное» лучшее описание?
Джош
Достаточно близко. :-) Apple создала его, но я ожидаю, что он получит более широкое распространение в BSD-подобных ОС.
омантика
@calavera: Спасибо за редактирование. Я ненавижу, когда документы на крупных сайтах удаляются таким образом. Я добавил новую ссылку, которая, к сожалению, менее актуальна, в ней не упоминается, cronчто она устарела :-(
Джош
нп ... к сожалению, Apple, кажется, делает это много: /
Роберт С. Чаччо
4

Вы также можете запускать рабочие процессы Automator с iCal, если вы просто хотите что-то простое. В противном случае я бы сделал это через launchd.

jmlumpkin
источник
Единственная проблема с iCal заключается в том, что вы должны войти в систему для запуска задачи (правильно?)
Джош
да, я думаю, что вы должны войти в систему, чтобы сделать это. Я бы порекомендовал процесс запуска через это, но некоторые люди предпочли бы просто использовать iCal и всегда
входить
iCal - намного более простое решение! Смотрите скриншоты, которые я разместил. Я уверен, что вижу, как они могут быть пугающими :-)
Джош
просто для пояснения, ваши скриншоты предназначены для запуска, правильно?
jmlumpkin
2

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

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

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

KeithB
источник
1
Обратите внимание, что по умолчанию команда at отключена. Используйте «man atrun», чтобы выяснить, как включить его.
Кристофер Джонсон
2

iCal можно использовать для запуска сценариев AppleScripts , запуска приложений и выполнения задач по расписанию.

Существуют ограничения на использование iCal, но он включен в Mac OS X и относительно прост в настройке. Ограничения и наглядное описание того, как настроить запланированный AppleScript, включены в ссылку выше.

Настройка AppleScript по расписанию с помощью iCal в Mac OS X

Грэм Милн
источник