2

Я пытаюсь запустить скрипт через crontab в OSX 10.8.5, который будет работать в 4:30.

30 16 * * 1-5 /Library/Frameworks/Python.framework/Versions/2.7/bin/python /Users/lego90511/PycharmProjects/Stock\ Scanner/stock_scanner.py

Но сегодня я понял, что мой компьютер не всегда включен в 4:30. Поэтому я добавил исправление * 16 * * 1-5. Но потом я понял, что это может быть не между 4-5. Как я могу настроить запуск crontab в любое время после 16:00 (время 16 крон)?

2 ответа2

4

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

Затем утилита cron просыпается каждую минуту, проверяя все сохраненные crontabs, проверяя каждую команду, чтобы увидеть, должна ли она быть запущена в текущую минуту. При выполнении команд любой вывод отправляется по почте владельцу crontab (или пользователю, указанному в переменной окружения MAILTO в crontab, если таковой существует).

У Cron нет метода идентификации записей, которые он уже выполнил. Итак, вы могли бы сделать это:

* 16-23 * * 1-5 <script>

Но это просто скажет cron запускать этот скрипт каждую минуту с 16:00 до 23:59, пока работает cron. (Глядя на справочную страницу crontab (5) , я не думаю, что вы можете сделать «16-24» или «16-0».)

Итак, если вы хотите, чтобы что-то запускалось один раз с 16:00 до полуночи, я бы предложил, чтобы cron запускал скрипт каждые 15 минут, после 16:00:

*/4 16-23 * * 1-5 <script>

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

1

Для Linux есть Anacron для пропущенных заданий cron. (см. здесь)

Для Mac OSX я нашел эту версию, но, похоже, она больше не поддерживается.

Существует также версия здесь , которая является для "Леопарда":

Примечание. Эта версия Anacron будет работать на MacOS 10.5 (Leopard), но она не нужна, так как Leopard launchd будет запускать пропущенные задания при следующем пробуждении машины. Узнайте больше на http://mac.majorgeeks.com/files/details/anacron.html#Z5s7GokjQVbUATOU.99

Вы можете попробовать, если он работает на "Горном льве" или переключиться на "Launchd", который имеет встроенные функции для запуска пропущенных заданий.


Крон и Анакрон
Если вы используете Mandrake, SUSE или любой другой дистрибутив и ваш компьютер не включен 24 часа в сутки, есть несколько заданий Cron, которые могут быть забыты, потому что они запланированы на 3:00 AM - 4:00 утра. Установка Anacron установит это права. Anacron ищет пропущенные задания Cron и выполняет их через пять минут после загрузки компьютера. В результате вы заметите дополнительную активность вашего процессора и жесткого диска в течение 5-7 минут. Примечание. В Red Hat и Fedora Anacron предустановлен по умолчанию.

Установка Anacron проста и не требует специальной настройки. Вот пример того, как установить его с помощью Mandrake:

Центр управления Mandrake> Управление программным обеспечением> Установка программного обеспечения> поиск Anacron.

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