Прежде чем написать шаги ниже, я бы порекомендовал установить последнюю версию Python с Homebrew. Homebrew Это менеджер пакетов, как и PIP и Anaconda, и, честно говоря, я просто использую это в этом примере, потому что я часами пытался запустить простую работу Cron, но безрезультатно. У меня часто возникают ошибки о том, что я не могу открыть файл, который я хотел выполнить, или не нашел установленную версию Python. Я не буду вдаваться в свои ошибки в этом посте, но вы можете использовать любую другую установку Python, если хотите.
Я удалил свои версии Python 3.x, которые я установил (через Pip и Conda) и начал с нуля – удаление также было хлопотом. Итак, допустим, вы на своем Mac и имеете распределение Python по умолчанию, которое, я считаю, должно быть 2.7.10. Немногие разработчики обновляют модули в этой версии, поэтому, когда вы создаете проекты, лучше всего установить последнюю версию Python.
Я следовал РУКОВОДСТВО PREAL PYTHON Чтобы установить Python 3 через Homebrew (действительно несколько шагов на самом деле) Поэтому я предполагаю, что вы сделали то же самое в будущем в этом посте.
Откройте свою командную строку терминала на своем Mac и перейдите в домашний каталог, выполняя CD ~/
Для меня это Пользователи/Накул
Мы будем использовать встроенную функцию Crontab от Mac OS, чтобы написать наши задания Cron.
Тип crontab -e
и нажмите Enter.
Это должно открыть пустой файл, именно здесь вы напишете свои задания Cron. Вы можете написать задание для запуска сценария оболочки или сценария Python в этом случае.
Тип : Q!
Чтобы выйти из редактора.
Предполагая, что вы следовали руководству Homebrew, Double проверьте свой путь установки Python. Вы можете сделать это, набрав который Python3
в вашем терминале. Он должен отображать /usr/local/bin/python3
(Что является псевдонимом для реального места установки домашнего завода, но это нормально, мы не вдамся в это прямо сейчас). Вы будете включать этот путь в свой синтаксис работы Cron, в который мы приведем.
Прежде чем написать нашу работу Cron, у нас должен быть сценарий, который мы хотим запустить.
Я уже создал каталог /Документы/python/cron
В моем домашнем каталоге и создал простой сценарий под названием cron_test.py
Примечание: этот скрипт Python должен быть исполняется, поэтому измените разрешения на него, чтобы разрешить это, я только что запустил chmod 777 cron_test.py
cron_test.py
Сценарий просто создает каталог с текущей датой и временем в качестве имени.
Текст сценария следующим образом, если вы хотите использовать один и тот же сценарий:
#!/usr/bin/python3 from datetime import datetime import os sysDate = datetime.now() # convert system date to string curSysDate = (str(sysDate)) # parse the date only from the string curDate = curSysDate[0:10] # parse the hour only from the string curHour = curSysDate[11:13] # parse the minutes only from the string curMin = curSysDate[14:16] # concatenate hour and minute with underscore curTime = curHour + '_' + curMin # val for the folder name folderName = curDate + '_' + curTime # make a directory os.mkdir(folderName)
Вы можете задаться вопросом, что эта первая строка #!/usr/bin/python3
является. Эта строка называется шебангом, и как задание Cron будет интерпретировать сценарий, поэтому в этом случае она будет запускать cron_test.py с помощью python (как будто вы выполнили Python cron_test.py
в вашем терминале).
Итак, у нас установлен Python 3.x, у нас есть сценарий Python, теперь давайте напишем задание Cron, чтобы запустить это!
Допустим, мы хотим запустить этот сценарий каждую минуту (в основном с целью тестирования на вашем конце, чтобы вы могли увидеть результаты, не ожидая слишком долго).
Синтаксис работы Cron выглядит следующим образом:
*/1 * * * * cd ~/documents/python/cron &&/usr/local/bin/python3 cron_test.py >> ~/documents/python/cron/cron.txt 2> & 1
Что означает вышеперечисленное? Давайте проанализируем это быстро.
*/1 * * * *
Просто означает, что работа будет работать каждую минуту.
CD ~/Documents/Python/Cron &&/usr/local/bin/python3
Перейдите в каталог, в котором находится сценарий, который вы хотите выполнить, и определяет использование Python вместо Bash для выполнения (поскольку это сценарий Python, также помните, что мы добавили Шебанг в сценарий, я обнаружил, что он должен быть в Оба места для работы).
cron_test.py
это имя файла сценария.
>> ~/документы/python/cron/cron.txt
Определяет, где вывести журналы в случае выполнения задания есть какие -либо проблемы.
2> & 1
Просто отключает электронную почту, потому что по умолчанию задание Cron попытается отправить электронное письмо, но у нас нет указанного адреса.
В любом случае, этого должно быть достаточно, чтобы вы писали и тестировали свои сценарии, так что продолжайте!
Не стесняйтесь просматривать Интернет, чтобы узнать больше о Cron Jobs и Crontab. Я решил написать это для тех, кто имеет фундаментальное понимание программирования и хотел написать работу Cron как можно скорее.
Надеюсь, это помогло; Иди напишите несколько рабочих мест! Найди меня в Интернете:
Подключитесь на LinkedIn
Следуйте в Твиттере
Оригинал: “https://dev.to/nakulkurane/how-to-execute-a-cron-job-on-mac-with-crontab-1mc6”