60

Cron? Запуск программ? ческий ??

Если так, то как?

10 ответов10

59

Для справки, все 3 варианта будут работать. Однако опция iCal имеет больше ограничений, чем другие.

(Есть графические интерфейсы для редактирования cron и launchd, как упоминалось в других ответах)

Cron - самый прямой и хорошо известный, и есть много доступных учебников. Coles Notes должен добавить последнюю строку снизу к вашему crontab (либо отредактировав /etc/crontab либо используя crontab в командной строке):

MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"

В Mac OS X cron фактически был заменен launchd но launchd обратно совместим с cron означает, что вы все еще можете использовать cron но он фактически launchd выполняя всю работу.

Если вы хотите использовать launchd вы также можете проверить другие вопросы здесь, в Super User: (например. Как запустить команду launchd от имени пользователя root?) где вы хотите сохранить файл конфигурации (plist-файл), так как время его запуска зависит от того, в каком каталоге он хранится и как он загружается (например, использовали ли вы sudo или нет) - аналогично cron.

Ниже приведен пример запуска ежедневного запуска запусков (убедитесь, что файл и метка совпадают - минус список для метки). Этот сценарий запускается ежедневно в 3 минуты после полуночи:

<?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>local.IDENTIFIER_HERE.SOMETHING</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <false/>
    <key>UserName</key>
    <string>USERNAME HERE</string>
    <key>Program</key>
    <string>/PATH/TO/SCRIPT</string>
    <key>ProgramArguments</key>
    <array>
        <string>Argument_1</string>
        <string>Argument_2</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>00</integer>
        <key>Minute</key>
        <integer>03</integer>
    </dict>
</dict>
</plist>

Стоит также отметить, что запущенные задачи, если они были запланированы на то время, когда компьютер спит или выключен, будут запускаться, когда компьютер снова станет доступным (его включение или пробуждение) - хотя только один раз, независимо от того, сколько дней он может иметь было. Изменить: Я только что был в документе Apple, в котором говорилось, что если машина выключена, то вы потеряете все события запуска в течение этого времени, (ваш скрипт не запустится при запуске), (сон запускает скрипт при пробуждении)


Другой вариант - использовать « at » (проверьте страницу руководства с "man at"). Скрипт может перепланировать себя, например:

echo "sh $0 $@" | at `date +%H:%M` tomorrow

(используйте «+ 10 минут» вместо "завтра", чтобы запускать его каждые 10 минут; чтобы остановить планирование, просто выполните «at -l», чтобы получить список идентификаторов запланированных заданий, а затем «at -r id », чтобы удалить задание).

Возможно, вам придется сначала запустить соответствующий демон (atrun) с (см. Https://superuser.com/a/43680):

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Преимущества: быстрое исправление, отсутствие доступа к sudo/root, простое создание сложных шаблонов расписаний. Недостаток: нестандартный метод планирования для OS X (который запускается)

8

LaunchControl - еще один графический интерфейс для launchd/launchctl. Хотя альтернативы, упомянутые другими, вполне способны запускать скрипт ежедневно, с помощью LaunchControl вы можете настраивать сложные расписания (например, «один раз в будний день, в выходные дни каждый час между 14:00 и 20:00»). Также это (AFAIK) единственный инструмент, который фактически проверяет работу. Если работа не работает должным образом, это покажет вам, почему.

Вы можете попробовать столько, сколько захотите.

5

CronniX - хороший интерфейс с графическим интерфейсом для планирования заданий cron на Mac ... Довольно прилично, если вы не хотите углубляться в документацию cron.

2

Обновление: вы можете проверить некоторые приложения в Mac OS X App Store, которые делают это:

Lingon также, кажется, также доступен, в зависимости от того, какую ОС вы используете.

2
  • Для iCal вы можете прочитать эту статью.
  • Вы должны найти достаточно учебников для cron если вы Google для этого.

Это зависит от того, что вы хотите: сценарии iCal будут выполняться только в том случае, если вы вошли в систему, cron выполняет сценарий без входа в систему. Я не знаю, выполняет ли iCal сценарий, если Mac был выключен во время выполнения сценария. cron делает это.

1

Вот простая бесплатная утилита для генерации plist XML:

http://www.gieson.com/Library/projects/utilities/launcha/

С помощью этой утилиты нет необходимости устанавливать программу, просто сохраните результаты в папке Library/LaunchAgents.

1

Если вы хотите попробовать БЕСПЛАТНО, я бы порекомендовал вам задачу до рассвета

http://www.macupdate.com/app/mac/33283/task-till-dawn

1

Я всегда использую Lingon для этого, но похоже, что он не в разработке. Вы можете попробовать Crontooie, но я никогда не использовал его лично. Или просто отредактируйте файл crontab в терминале.

0
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $ 

... все командные строки, которые вы добавляете для ".... cut ....", будут запускаться каждые пять минут.

30 лет прогресса, и «cron» до сих пор мой любимый планировщик.

0

Если событие календаря соответствует вашим потребностям, встроенное приложение Automator также позволяет создавать сигналы календаря, которые запускаются событиями календаря. Вы можете использовать некоторые встроенные действия на основе пользовательского интерфейса, чтобы делать то, что вы хотите, или вы также можете запустить какое-либо приложение или пользовательский AppleScript, JavaScript или сценарий оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .