Автоматизация запуска скриптов с помощью Cronjobs и Python 2023
В этой статье мы обсудим, как запускать скрипт на Python в качестве задания cron. Вы узнаете, как создать задание cron, как запланировать его выполнение в определённое время и как убедиться, что оно выполняется правильно. Мы также рассмотрим некоторые советы и рекомендации по устранению неполадок в вашей работе с Cron, чтобы вы могли поддерживать бесперебойную работу вашего скрипта.
Что такое cron, cronjob, crontab?
Утилита командной строки cron – это планировщик заданий в Unix-подобных операционных системах. Пользователи, которые настраивают и поддерживают программные среды, используют Cron для планирования заданий (команд или сценариев оболочки), также известных как задания cron.
Задание cron предназначено для выполнения регулярных запланированных действий, таких как резервное копирование, генерация отчётов и так далее. Один объект CronJob подобен одной строке файла crontab (cron table) в системе Unix. Он периодически выполняет задание по заданному расписанию.
Проще говоря, это планировщик, который будет периодически запускать ваши скрипты / задачи (которые вы выберете) без каких-либо проблем (только для пользователей Mac и Linux).
Итак, давайте сначала создадим очень простое задание cron, которое будет добавлять “Working!” в текстовый файл каждые 2 минуты
crontab — (также CRON TABLE) в основном содержит список всех заданий, которые должны быть выполнены, а также команду для управления списком.
crontab -e (для редактирования заданий cron)
crontab -l (для списка всех заданий)
Вам просто нужно помнить об этих двух командах. Итак, давайте начнём! Откройте свой терминал, введите crontab -e и выберите nano в качестве редактора:
После выбора nano или vim(idk..) вам откроется такое окно:
Формат задания cron
Итак, каждая строка файла crontab представляет задание и выглядит следующим образом:
План определяется с помощью (* * * * *) пяти полей, указывающих, когда должно быть выполнено задание.
Очевидно, что разобраться в этих пяти звёздах сложно даже опытным пользователям, поэтому вы можете легко сделать это с помощью сайта https://crontab.guru/. Для нашего варианта использования мы хотим запускать скрипт каждые 2 минуты:
* * * * * echo “Working!” >> PATH_TO_TXT_FILE
* * * * * echo “Working!” >> /home/vaibhav/Desktop/workings.txt
Это будет добавлять строку “Working!” к файлу “workings.txt ” каждые 2 минуты.
Просто скопируйте и вставьте это в crontab ( crontab -e ) (ctrl+X to exit and save (y))
Вы можете проверить работу вашего кода с помощью команды — crontab -l
Текстовый файл:
Итак, с этим, я думаю, у вас будет чёткое представление о том, как всё работает.
Если у вас возникли какие-либо проблемы, убедитесь:
- Что путь правильный
- Что синтаксис в crontab правильный
- Что в crontab -l указан ваш cronjob
Для скрипта на Python
Код не изменится, но нужно помнить об этом:
- **** обязательно используйте абсолютный путь для всего (используйте ОС, библиотеку путей) как внутри, так и за пределами скрипта****
Пример:
*/5 * * * * PATH_TO_PYTHON PATH_TO_MAINFILE
Если ваш скрипт на Python генерирует выходные данные, вы можете сохранить их с помощью:
>> LOGFILE_PATH 2>&1
Это позволит записать все результаты, сгенерированные скриптом Python (при запуске как cronjob), в файл журнала:
*/5 * * * * PATH_TO_YOUR_PYTHON PATH_TO_MAINFILE >> LOGFILE_PATH 2>&1
Пример скрипта:
*/5 * * * * python3 /home/ubuntu/repo_name/main.py >> /home/ubuntu/cronsendlogs.log 2>&1
Этот код будет запускать main.py каждые 5 минут и регистрировать любые результаты, сгенерированные main.py в файле cronsendlogs.txt .
Как заметить ошибки?
Если скрипт Python сгенерирует ошибку, она войдёт в систему cronsendlogs.txt, но если ошибка связана с cron, по умолчанию задания cron регистрируются в…
/var/log/syslog
или
/var/log/cron.log
Проблема заключается в том, что системных журналов слишком много. Итак, вот короткий путь:
grep CRON /var/log/syslog
Запуск/Перезапуск Cron
service cron start
service cron restart
Заключение
В заключение, запуск скрипта Python в качестве задания cron может быть ценным инструментом для автоматизации задач и оптимизации процессов. Планируя запуск сценария через определённые промежутки времени, вы можете гарантировать, что задачи будут выполняться эффективно и без ручного вмешательства. Чтобы настроить скрипт Python в качестве задания cron, важно иметь базовое представление о синтаксисе cron, а также о сценарии оболочки, необходимом для запуска скрипта на Python. Обладая этими навыками и правильной настройкой, вы можете пользоваться преимуществами полностью автоматизированной системы, которая будет работать бесперебойно и экономить время.
Python + Cron определенно сэкономит вам немного времени!!