Поиск по сайту:

Кронтаб в Linux


С появлением новых технологий мы хотим, чтобы все было автоматизировано, включая наши компьютерные системы. Например, как системный администратор, мы можем захотеть, чтобы наша резервная копия запускалась каждую ночь в 2 часа ночи. Тогда для чего нужны компьютеры, если нам приходится просыпаться ежедневно в 2 часа ночи и запускать команды вручную, чтобы инициировать резервное копирование. Должен быть способ, который сообщает системе автоматически запускать резервное копирование в определенное время. К счастью, ОС Linux предлагает утилиту cron, которая позволяет автоматизировать задачи в определенный период.

Cron — это эффективная и популярная утилита командной строки, используемая для планирования широкого круга задач в указанное время без участия пользователя. Запланированные задачи известны как задания cron, а crontab — это список файлов, содержащих задания cron.

В этой статье мы объясним на различных примерах, что вы можете редактировать и использовать файл crontab для планирования задач в системе Debian 10.

Cron можно использовать для автоматизации задач в следующих сценариях:

  • Резервное копирование по расписанию,

  • Проверка места на диске через определенный интервал,

  • Запуск автоматического обслуживания,

  • Периодически удаляя ненужные файлы,

  • Запуск диагностики сети

Синтаксис

Если вы понимаете синтаксис, работать с cron будет проще. Общий синтаксис использования cron:

* * * * /path/to/script.sh

Каждое из полей соответствует следующему:

Minute (0-59) Hour (0-24) Day_of_the_Month (1-7) Month_of_the_Year (1-12)
Day_of_the_Week  (0-6) command

Установка Крона

Cron предустановлен в Debian 10. Однако, если он отсутствует в вашей системе, выполните следующую команду, чтобы установить его:

$ sudo apt install cron

Посмотреть кронтаб

Чтобы просмотреть файл crontab, используйте следующую команду:

$ crontab –l

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

$ sudo crontab –u user -l

Изменить кронтаб

Чтобы отредактировать файл crontab текущего пользователя:

$ crontab –e

Чтобы отредактировать файл crontab определенного пользователя:

$ sudo crontab -u user

Если вы редактируете файл crontab в первый раз, вам будет предложено выбрать редактор:

После выбора редактора появится следующее окно.

Например, вы хотите запускать сценарий резервного копирования с именем «backup.sh», расположенный в каталоге документов, ежедневно в 2:00. Для этого вам нужно будет добавить следующую строку в файл crontab:

0 2 * * * /Documents/backup.sh

В приведенном выше окне вы можете добавлять свои задания cron одно за другим. После этого сохраните и закройте файл, после чего все задания cron будут автоматически запускаться с указанным интервалом.

Удалить кронтаб

Чтобы удалить файл crontab, введите в Терминале следующую команду:

$ crontab -r

Теперь давайте рассмотрим серию примеров заданий cron на машине с Linux.

1. Запускайте задание cron каждую минуту

Чтобы выполнять задание cron каждую минуту, добавьте следующую строку в файл crontab:

* * * * * /path/to/script.sh

2. Запускайте задание cron каждые 10 минут.

Чтобы запланировать выполнение задания cron каждые 10 минут, добавьте следующую строку в файл crontab.

*/10 * * * * /path/to/script.sh

3. Запустите задание cron в определенные месяцы

Чтобы запланировать выполнение задания cron в определенные месяцы, например. Март, август, декабрь, добавьте задание cron в свой файл crontab следующим образом:

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

4. Запустите задание cron в выбранные дни

Если вы хотите, чтобы ваше задание cron выполнялось в выбранные дни, допустим, в воскресенье и пятницу в 17:00, оно должно выглядеть следующим образом.

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

5. Запускайте задание cron ежедневно в определенное время.

Чтобы запланировать ежедневное выполнение задания cron в определенное время, скажем, в 3 часа ночи, добавьте эту строку в свой файл crontab.

0 3 * * * /path/to/script.sh

6. Запустите задание cron в определенный день

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

0 0 * * SUN /path/to/script.sh

Работа будет выполняться в 00:00 каждое воскресенье.

7. Запускайте несколько задач в одном задании cron

Чтобы запланировать несколько задач в одном задании cron, добавьте все сценарии в файл crontab, разделив их точкой с запятой.

* * * * * /path/to/script1.sh; /path/to/script2.sh

8. Запускайте задание cron каждый рабочий день

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

0 0 * * 1-5 /path/to/script.sh

Работа будет выполняться в 00:00 каждый будний день.

9. Запускайте задание cron два раза в день

Чтобы запланировать выполнение задания два раза в день, например. в 6:00 и 15:00 вам нужно будет добавить эту строку в ваш файл crontab:

0 6,15 * * * /path/to/script.sh

10. Запускайте задание cron каждый час

Чтобы запланировать выполнение задания cron каждый час в 0-ю минуту, вам нужно будет добавить эту строку в ваш файл crontab:

0 * * * * /path/to/script.sh

Например, если текущее время — 14:00, задание будет выполняться в 15:00, 16:00 и т. д.

11. Запускайте задание cron каждые 3 часа

Чтобы запланировать запуск задания cron через каждые 3 часа в 0-ю минуту, вам нужно будет добавить эту строку в ваш файл crontab:

0 */3 * * * /path/to/script.sh

Например, если текущее время — 14:00, задание будет выполняться в 17:00, 20:00 и т. д.

12. Запускайте задание cron в 16:00 первого числа каждого месяца.

Чтобы запланировать выполнение задания первого дня каждого месяца в 16:00, вам нужно будет добавить эту строку в свой файл crontab:

0 16 1 * * /path/to/script.sh

Строки в Crontab

Вы также можете использовать следующие строки вместо длинных повторяющихся команд.

@hourly- Run cron job every hour i.e. “0 * * * *

@midnight- Run cron job every day i.e. “0 0 * * *

@daily- same as midnight

@weekly- Run cron job every week, i.e. “0 0 * * 0

@monthly- Run cron job every month i.e. “0 0 1 * *

@annually- Run cron job every year i.e. “0 0 1 1 *

@yearly- same as @annually

@reboot- Run cron job at every boot

Например, чтобы запускать задание cron каждый день в первую минуту и первый час, добавьте следующую строку:

@daily /path/to/script.sh

Например, чтобы запускать задание cron каждый раз при перезагрузке сервера:

@reboot /path/to/script.sh

Вот и все! В этой статье мы узнали, как автоматизировать различные задачи с помощью crontab в системе Debian. Используя приведенные выше примеры, вы можете запланировать выполнение любого задания без участия пользователя.

Статьи по данной тематике: