Cron? Запуск программ ? ческий ??
Если да, то как?
Cron? Запуск программ ? ческий ??
Если да, то как?
Ответы:
Для справки, все 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.
Ниже приведен пример ежедневного запуска launchd plist (убедитесь, что файл и метка совпадают - за исключением plist для метки) - этот скрипт запускается ежедневно в 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 (который запускается)
launchd
это путь под OS X.
crontab -e
, он перейдет в текстовый редактор на основе терминала для файла, который станет вашим личным crontab при сохранении.
LaunchControl - еще один графический интерфейс для launchd / launchctl. Хотя альтернативы, упомянутые другими, вполне способны запускать сценарий ежедневно, с помощью LaunchControl вы можете настраивать сложные расписания (например, «один раз в будний день, в выходные дни каждый час между 14:00 и 20:00»). Также это (AFAIK) единственный инструмент, который фактически проверяет работу. Если работа не работает должным образом, это покажет вам, почему.
Попробовать можно столько времени, сколько вы хотите.
cron
если вы Google для этого.Это зависит от того, что вы хотите: сценарии iCal будут выполняться только в том случае, если вы вошли в систему, cron
выполняет сценарий без входа в систему. Я не знаю, выполняет ли iCal сценарий, если Mac был выключен во время выполнения сценария был казнен. cron
делает это
Обновление: вы можете проверить некоторые приложения в Mac OS X App Store, которые делают это:
Lingon также, по-видимому, доступен, в зависимости от того, какую ОС вы используете.
Если вы хотите попробовать БЕСПЛАТНО, я бы порекомендовал вам задачу до рассвета
Вот простая бесплатная утилита для генерации plist XML:
http://www.gieson.com/Library/projects/utilities/launcha/
С помощью этой утилиты нет необходимости устанавливать программу, просто сохраните результаты в папке Library / LaunchAgents.
RunAtStart
него установлено значение false (если вы не хотите, чтобы оно было истинным). Я потратил час на то, чтобы понять, почему мой Finder зависает и мешает загрузке рабочего стола при загрузке. Отключение RunAtStart
не мешает фиксированному расписанию.
Я всегда использую Lingon для этого, но похоже, что он не в разработке. Вы можете попробовать Crontooie , но я никогда не использовал его лично. Или просто отредактируйте файл crontab в терминале.
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» до сих пор мой любимый планировщик.
-С
Если событие календаря соответствует вашим потребностям, встроенное приложение Automator также позволяет создавать сигналы календаря, которые запускаются событиями календаря. Вы можете использовать некоторые встроенные действия на основе пользовательского интерфейса, чтобы делать то, что вы хотите, или вы также можете запустить какое-либо приложение или пользовательский AppleScript, JavaScript или сценарий оболочки.