Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

Автоматизация запуска скриптов с помощью 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 в качестве редактора:

Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

После выбора nano или vim(idk..) вам откроется такое окно:

Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

Формат задания cron

Итак, каждая строка файла crontab представляет задание и выглядит следующим образом:

Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

План определяется с помощью (* * * * *) пяти полей, указывающих, когда должно быть выполнено задание.

Очевидно, что разобраться в этих пяти звёздах сложно даже опытным пользователям, поэтому вы можете легко сделать это с помощью сайта https://crontab.guru/. Для нашего варианта использования мы хотим запускать скрипт каждые 2 минуты:

Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

* * * * * 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

Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

Текстовый файл:

Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

Итак, с этим, я думаю, у вас будет чёткое представление о том, как всё работает.

Если у вас возникли какие-либо проблемы, убедитесь:

  • Что путь правильный
  • Что синтаксис в crontab правильный
  • Что в crontab -l указан ваш cronjob
Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

ля скрипта на 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
Автоматизация запуска скриптов с помощью Cronjobs и Python 2023

Запуск/Перезапуск Cron

service cron start service cron restart

Заключение

В заключение, запуск скрипта Python в качестве задания cron может быть ценным инструментом для автоматизации задач и оптимизации процессов. Планируя запуск сценария через определённые промежутки времени, вы можете гарантировать, что задачи будут выполняться эффективно и без ручного вмешательства. Чтобы настроить скрипт Python в качестве задания cron, важно иметь базовое представление о синтаксисе cron, а также о сценарии оболочки, необходимом для запуска скрипта на Python. Обладая этими навыками и правильной настройкой, вы можете пользоваться преимуществами полностью автоматизированной системы, которая будет работать бесперебойно и экономить время.

Python + Cron определенно сэкономит вам немного времени!!

Статья была взята из этого источника:

Начать дискуссию