береженого кольт бережет
береженого кольт бережет

Примеры команды CRONTAB

Cron (Command Run ON) — утилита для автоматического запуска программ и скриптов на сервере в определённое время. Cron очень полезен для рутинных задач, таких как сканирование системы, ежедневное резервное копирование и т.д. Cron автоматически выполняет задания в бэкенде в указанное время. Управлять cron нужно с помощью crontab. В этой статье вы увидите 18 полезных примеров команды crontab.

Синтаксис Crontab

Crontab имеет шесть полей. 1-5 поля определяют дату и время исполнения. 6 поле используется для команды/скрипта. Синтаксис выглядит следующим образом:

  • * — соответствует чему угодно
  • День недели в другом формате: montuewed
  • Месяц в другом формате:  janfebmar
  • Несколько значений в поле: 1,5,7 или mon,fri
  • Диапазон: 1-10 или 20-30 или sun-fri или  feb-apr
  • Несколько диапазонов: jan-mar,jul-sep

Как изменить расписание

Чтобы добавить или обновить задания в crontab, используйте команду ниже. Откроется текстовый файл с заданиями crontab, где их можно будет редактировать.

crontab -e

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

crontab -u username -e

Как узнать список заданий Crontab

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

crontab -l

Чтобы посмотреть список заданий другого пользователя, используйте -u:

crontab -u username -l

1. Ежедневно в 2 часа ночи.

Это будет полезно для ежедневного резервного копирования.

0 2 * * * /bin/sh backup.sh

2. Дважды в день

Команда ниже будет выполняться в 5 утра и 5 вечера ежедневно. 

0 5,17 * * * /scripts/script.sh

3. Каждую минуту

* * * * *  /scripts/script.sh

4. Каждое воскресенье в 17:00

Пригодится для планирования еженедельных задач.

0 17 * * sun  /scripts/script.sh

5. Каждые 10 минут

Если вы хотите запустить скрипт с интервалом в 10 минут, вы можете настроить его, как показано ниже. Может быть полезно для мониторинга.

*/10 * * * * /scripts/monitor.sh

6. Определенные месяцы

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

* * * jan,may,aug *  /script/script.sh

7. Определенные дни

Если вам необходимо составить расписание выполнения задачи только на некоторые дни. Приведенный ниже пример будет выполняться каждое воскресенье и пятницу в 17:00.

0 17 * * sun,fri  /script/script.sh

8. Первое воскресенье каждого месяца.

Запланировать выполнение сценария только в первое воскресенье невозможно по параметру времени, но мы можем использовать условие в полях команд, чтобы сделать это.

0 2 * * sun  [ $(date +%d) -le 07 ] && /script/script.sh

9. Каждые четыре часа.

Если вы хотите запустить скрипт с интервалом в 4 часа:

0 */4 * * * /scripts/script.sh

10. Дважды в каждое воскресенье и понедельник.

Чтобы запланировать выполнение задачи дважды только в воскресенье и понедельник:

0 4,17 * * sun,mon /scripts/script.sh

11. Несколько задач 

Можно запланировать несколько задач в одной записи с помощью точки с запятой:

* * * * * /scripts/script.sh; /scripts/scrit2.sh

12. Ежегодно (@yearly)

@yearly равно «0 0 1 1 *». Задание будет выполняться в первую минуту каждого года. Можно отправить новогодние поздравления 🙂

@yearly /scripts/script.sh

13. Ежемесячно (@monthly)

@monthly равно «0 0 1 * *». Задание будет выполняться в первую минуту месяца. 

@monthly /scripts/script.sh

14. Еженедельно (@weekly)

@weekly равно «0 0 1 * mon». Задание будет выполняться в первую минуту недели. 

@weekly /bin/script.sh

15. Ежедневно (@daily)

@daily равно «0 0 * * *». Задание будет выполняться в первую минуту каждого дня.

@daily /scripts/script.sh

16. Ежечасно (@hourly).

@hourly равно «0 * * * *». Задание будет выполняться в первую минуту каждого часа.

@hourly /scripts/script.sh

17. Выполнение задач при перезагрузке системы (@reboot).

@reboot полезен для тех задач, которые вы хотите запустить при перезагрузке системы. 

@reboot /scripts/script.sh

18. Отправка результатов заданий на электронную почту

Если вы хотите отправить вывод на почту, то это можно сделать, установив переменную MAIL, как показано ниже.

# crontab -l
MAIL=bob
0 2 * * * /script/backup.sh