Создание пользовательского задания Cron в Linux

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

Что такое задание Cron?

Задание cron – это запланированная задача, определенная в системной таблице crontab (cron table), которая выполняет команды или скрипты в определенное время или с определенным интервалом. Cron широко используется, потому что это:

  • Легкий

  • Высокая настраиваемость

  • Встроен в большинство дистрибутивов Linux

Общие примеры использования

  • Ежедневное или еженедельное резервное копирование баз данных

  • Запуск скриптов PHP/Python

  • Ротация журналов и очистка временных файлов

  • Отправка электронных писем по расписанию

  • Обновление кэша данных или синхронизация файлов

Шаг 1: Зайдите в Crontab

Чтобы отредактировать кронтаб вашего пользователя (без доступа root):

crontab -e
Для редактирования кронтаба root (требуется sudo):
sudo crontab -e

Шаг 2: Разбивка синтаксиса Cron

Каждое задание cron использует следующий формат:

* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └──── Day of the week (0-7, Sunday = 0 or 7)
│ │ │ └────── Month (1–12)
│ │ └──────── Day of the month (1–31)
│ └────────── Hour (0–23)
└──────────── Minute (0–59)

Пример: Запускать скрипт каждый день в 2 часа ночи

0 2 * * * /home/user/scripts/backup.sh

Шаг 3: Создание пользовательского сценария

Допустим, вы хотите запустить пользовательский сценарий Python. Сначала создайте файл:

nano /home/user/scripts/cleanup.py

Пример сценария:

#!/usr/bin/env python3
import os
import datetime
log_dir = "/var/log/myapp"
threshold = 7 # days
now = datetime.datetime.now()
for filename in os.listdir(log_dir):
filepath = os.path.join(log_dir, filename)
if os.path.isfile(filepath):
file_age = now - datetime.datetime.fromtimestamp(os.path.getmtime(filepath))
if file_age.days > threshold:
os.remove(filepath)

Сделайте скрипт исполняемым:

chmod x /home/user/scripts/cleanup.py

Шаг 4: Добавьте задание Cron

Отредактируйте свой crontab и добавьте:

0 1 * * * /home/user/scripts/cleanup.py >> /var/log/cleanup.log 2>&1

Это:

  • Запускает скрипт ежедневно в 1:00 AM

  • Записывает результаты в файл /var/log/cleanup.log

Примеры использования

✅ Выполнять каждые 10 минут

*/10 * * * * /home/user/check_status.sh

✅ Запускать только по понедельникам в 3 часа ночи

0 3 * * * 1 /home/user/scripts/weekly_report.sh

Отключение или удаление задания Cron

Временно отключите строку, закомментировав ее символом #.

Чтобы удалить все задания:

crontab -r

Пользовательские задания cron – это мощный инструмент для автоматизации, обслуживания и обеспечения надежности. Независимо от того, управляете ли вы персональным VPS, развертываете скрипты бэкенда или запускаете производственные рабочие нагрузки, освоение cron позволит вам контролировать время и порядок выполнения задач – без особых усилий.