cron — планувальник завдань

cron — планувальник завдань

Изображение записи по умолчанию
0

cron — планировщик задач

cron — встроенный планировщик задач Linux, выполняющий команды по расписанию. Незаменим для резервного копирования, очистки логов, обновлений и регулярных скриптов.

crontab — пользовательские задачи

# Редактировать задачи текущего пользователя
crontab -e

# Просмотреть задачи
crontab -l

# Удалить все задачи
crontab -r

# Редактировать задачи другого пользователя (нужен root)
sudo crontab -e -u alice
sudo crontab -l -u alice

Формат crontab

# Формат: минута  час  день_месяца  месяц  день_недели  команда
#          *       *     *            *      *             команда
#
# Диапазоны:
#   минута:       0-59
#   час:          0-23
#   день месяца:  1-31
#   месяц:        1-12 (или jan-dec)
#   день недели:  0-6  (0=воскресенье, или sun-sat)

Примеры

# Каждую минуту
* * * * * /script.sh

# Каждый день в 3:00
0 3 * * * /backup.sh

# Каждый понедельник в 9:00
0 9 * * 1 /weekly-report.sh

# 1-го числа каждого месяца в полночь
0 0 1 * * /monthly-cleanup.sh

# Каждые 15 минут
*/15 * * * * /check.sh

# Каждый час с 9:00 до 17:00
0 9-17 * * * /workday-task.sh

# Каждые 2 часа
0 */2 * * * /monitor.sh

# По будням в 18:00
0 18 * * 1-5 /end-of-day.sh

# 1 и 15 числа каждого месяца
0 0 1,15 * * /bi-monthly.sh

Специальные строки

@reboot       # при загрузке системы
@yearly       # раз в год (0 0 1 1 *)
@annually     # то же что @yearly
@monthly      # раз в месяц (0 0 1 * *)
@weekly       # раз в неделю (0 0 * * 0)
@daily        # раз в день (0 0 * * *)
@hourly       # каждый час (0 * * * *)
# Пример
@reboot /scripts/startup.sh
@daily /scripts/daily-backup.sh

/etc/crontab — системный crontab

# Формат отличается — добавлено поле пользователя:
# минута час день месяц день_недели ПОЛЬЗОВАТЕЛЬ команда

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Пример:
0 3 * * * root /usr/local/bin/backup.sh
*/30 * * * * alice /home/alice/check.sh

/etc/cron.d/ — дополнительные cron-файлы

# Формат как в /etc/crontab (с полем пользователя)
ls /etc/cron.d/

# Пример файла /etc/cron.d/myapp:
0 2 * * * root /opt/myapp/cleanup.sh

Каталоги cron

# Скрипты в этих каталогах выполняются автоматически:
/etc/cron.hourly/    # каждый час
/etc/cron.daily/     # каждый день
/etc/cron.weekly/    # каждую неделю
/etc/cron.monthly/   # каждый месяц

# Просто положите скрипт и сделайте исполняемым:
sudo cp backup.sh /etc/cron.daily/
sudo chmod +x /etc/cron.daily/backup.sh

Переменные окружения в crontab

# Можно задавать переменные
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=admin@example.com
HOME=/root

0 3 * * * /backup.sh

Логи cron

# Проверить, выполняются ли задачи
grep CRON /var/log/syslog
journalctl -u cron

# Логи конкретной задачи
grep "backup.sh" /var/log/syslog

Практическое задание

  1. Просмотрите текущие задачи: crontab -l
  2. Создайте задачу: crontab -e и добавьте */2 * * * * echo "$(date) hello" >> /tmp/cron-test.log
  3. Подождите 2 минуты и проверьте: cat /tmp/cron-test.log
  4. Проверьте системные задачи: cat /etc/crontab
  5. Посмотрите каталоги: ls /etc/cron.daily/
  6. Удалите тестовую задачу: crontab -r

Comments

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Related Post