Crontab - это важный инструмент Linux, который используется для планирования заданий, чтобы программы и скрипты могли быть выполнены в определенное время. В этой статье я расскажу вам, как можно запланировать задание в Debian и покажу несколько примеров.
Предварительные условия
Прежде чем продолжить, вам необходимо получить права root.
Установка Cron и Crontab
В Debian cron установлен по умолчанию. Однако, если он не установлен на вашей машине, выполните следующие несколько команд в терминале с правами root.
1 2 | apt-get update apt-get install cron |
Чтобы получить список заданий cron, уже запланированных на вашей машине, выполните следующие действия в терминале.
1 | crontab -l |
Открытие crontab с помощью текстового редактора
Чтобы открыть crontab с помощью текстового редактора, выполните следующую команду с привилегиями root.
1 | crontab -e |
Как только команда будет выполнена, вам будет предложено выбрать текстовый редактор, как показано на следующем снимке экрана.
Команда crontab -e открывает файл настроек текущего вошедшего пользователя, которым в моем примере является пользователь root. Чтобы открыть настройки другого пользователя, допустим, пользователя 'user', добавьте флаг -u, за которым следует имя пользователя. Пример:
1 | crontab -e -u user |
Синтаксис crontab
Linux crontab имеет шесть полей, как показано ниже.
1 | * * * * * /path/to/script.sh |
Каждое из полей имеет следующее значение.
[минута] [час] [день_от_месяца] [месяц_от_года] [день_от_недели] [команда]
- Минута 0 - 59
- Час 0 - 23
- День месяца 1 - 31
- Месяц года 1 - 12
- День недели 0 - 7
Основной пример задания cron
Вот некоторые примеры заданий cron.
1. Запланируйте задание cron на выполнение в 2 часа ночи ежедневно
1 | 0 2 * * * /bin/sh backup.sh |
Приведенное выше задание cron будет выполняться ежедневно в 2 часа ночи и запускать скрипт backup.sh. Это будет поддерживать резервное копирование каждый день.
2. Запланируйте выполнение задания cron дважды в день
1 | 0 5,17 * * * /scripts/script.sh |
Вышеуказанное задание cron будет выполняться в 5 утра и 5 вечера ежедневно. С помощью запятой можно указать несколько времен.
3. Запланируйте выполнение задания cron на каждую минуту
1 | * * * * * /scripts/script.sh |
Приведенное выше задание cron будет выполняться каждую минуту.
4. Запланируйте выполнение задания cron на каждое воскресенье в 5 часов вечера
1 | 0 17 * * sun /scripts/script.sh |
Приведенное выше задание cron будет выполняться каждое воскресенье в 5 часов вечера. Этот тип cron полезен для выполнения еженедельных задач, таких как ротация журналов и т.д.
5. Запланируйте выполнение задания cron на каждые 10 минут
Если вы хотите, чтобы ваше задание выполнялось каждые 10 минут, cron нужно обновить следующим образом.
1 | */10 * * * * /scripts/monitor.sh |
'*/10' означает выполнение каждые 10 минут.
6. Запланируйте выполнение задания cron на выбранные месяцы
Предположим, вы хотите выполнять cron в январе, мае и августе, задание cron должно быть настроено следующим образом.
1 | * * * jan,may,aug * /script/script.sh |
Опять же, несколько месяцев могут быть указаны через запятую.
7. Запланируйте выполнение задания cron на выбранные дни
Если вы хотите, чтобы задание cron выполнялось в выбранные дни, например, в воскресенье и пятницу в 17:00, оно должно выглядеть следующим образом.
1 | 0 17 * * * sun,fri /script/script.sh |
8. Планирование нескольких заданий в одном задании cron
Несколько скриптов могут быть запущены в одном задании следующим образом. Оба скрипта должны быть разделены точкой с запятой.
1 | * * * * * /scripts/script.sh; /scripts/scrit2.sh |
9. Запланируйте выполнение задания cron каждые 30 секунд
Чтобы запланировать выполнение задания cron каждые 30 секунд, нам нужно настроить два cron'а следующим образом:
1 | * * * * * sleep 30; /scripts/script.sh |
10. Запланируйте задание cron на выполнение дважды в воскресенье и понедельник
Если вы хотите запланировать выполнение задания дважды в 4 утра и 5 вечера каждое воскресенье и понедельник, cronjob должен выглядеть следующим образом:
1 | 0 4,17 * * * sun,mon /scripts/script.sh |
Час и неделя дня разделены запятыми.
Заключение
Спасибо, что прочитали эту статью о заданиях cron. Хорошего дня!!!