Что такое Crontab и как запланировать выполнение задачи в Unix-системах

Ответ

Crontab (cron table) — это стандартный планировщик задач в Unix-подобных операционных системах, который позволяет автоматически выполнять команды или скрипты в заданное время.

Для редактирования файла с задачами текущего пользователя используется команда:

crontab -e

Каждая строка в файле crontab соответствует одной задаче и имеет следующий формат:

минута час день_месяца месяц день_недели команда

  • минута: 0-59
  • час: 0-23
  • день_месяца: 1-31
  • месяц: 1-12
  • день_недели: 0-7 (0 и 7 — воскресенье)

Пример: Запуск Python-скрипта каждые 5 минут.

*/5 * * * * /usr/bin/python3 /home/user/projects/my_script.py >> /home/user/projects/my_script.log 2>&1

Ключевые моменты при настройке:

  1. Абсолютные пути: Всегда используйте полные пути к исполняемым файлам (например, /usr/bin/python3) и скриптам, так как cron выполняется в ограниченном окружении без привычных переменных PATH.
  2. Права на выполнение: Убедитесь, что скрипт имеет права на исполнение (chmod +x my_script.py).
  3. Перенаправление вывода: Чтобы отслеживать ошибки и результаты выполнения, перенаправляйте стандартный вывод (stdout) и вывод ошибок (stderr) в лог-файл (>> /path/to/log.log 2>&1).
  4. Альтернативы: Для более сложных рабочих процессов с зависимостями и очередями стоит рассмотреть такие инструменты, как Celery или Apache Airflow.