Skip to content

Latest commit

 

History

History
337 lines (201 loc) · 16.4 KB

File metadata and controls

337 lines (201 loc) · 16.4 KB

crontab в Linux

Источник: crontab in Linux

GeeksforGeeks · обновлено 23 января 2026

Команда crontab в Linux используется для создания, редактирования и управления запланированными задачами (cron jobs), которые автоматически выполняются в указанное время или с заданным интервалом. Она позволяет пользователям автоматизировать повторяющиеся системные и административные задачи без ручного вмешательства.

  • Используется для планирования повторяющихся заданий
  • Запускает задачи автоматически в фоне
  • Использует формат планирования на основе времени
  • Обычно применяется для резервного копирования, обновлений и задач обслуживания

Пример: проверка crontab в системе.

Проверьте crontab для планирования заданий в Linux.

Синтаксис:

systemctl status cron

Вывод:

crontab

Показывает, активна (running), неактивна (inactive) или остановлена служба cron.

Как работает crontab

Crontab позволяет пользователям планировать запуск команд или скриптов автоматически в фиксированное время или с регулярными интервалами. Следующие пункты объясняют, как crontab функционирует в системе Linux.

Конфигурация crontab

  • Каждый пользователь системы Linux может вести собственный файл crontab, содержащий запланированные задачи.
  • Файлы crontab определяют, какие команды или скрипты должны запускаться и когда.

Задание времени

  • Crontab использует пять полей времени для определения расписания выполнения.

  • Эти поля представляют минуту, час, день месяца, месяц и день недели.

  • Планируемое выполнение

  • Демон cron постоянно сканирует файлы crontab в поисках запланированных заданий.

  • Когда текущее время совпадает с запланированной записью, соответствующая команда выполняется.

Журналирование и уведомления

  • По умолчанию cron отправляет вывод заданий на email-адрес пользователя.
  • При необходимости пользователи могут перенаправлять вывод в файлы или отключать email-уведомления.

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

  • Системные администраторы управляют глобальными cron-заданиями с помощью /etc/crontab и /etc/cron.d/.
  • Отдельные пользователи управляют собственными запланированными задачами с помощью команды crontab -e.

Синтаксис

MIN HOUR DOM MON DOW CMD

Разберём каждое поле подробно:

MIN (минута)

  • Указывает точную минуту, когда команда будет выполнена.
  • Допустимые значения — от 0 до 59.

HOUR (час)

  • Обозначает час дня, когда команда запланирована к выполнению.
  • Допустимые значения — от 0 до 23 (24-часовой формат).

DOM (день месяца)

  • Указывает день месяца, в который будет выполняться задача.
  • Допустимые значения — от 1 до 31.

MON (месяц)

  • Указывает месяц, в котором команда будет выполнена.
  • Допустимые значения — от 1 до 12.

DOW (день недели)

  • Указывает день недели для выполнения задачи.
  • Допустимые значения — от 0 до 7, где 0 и 7 оба означают воскресенье.

CMD (команда)

  • Представляет фактическую команду или скрипт, который будет запущен в запланированное время.
  • Это поле содержит любую корректную команду Linux или путь к скрипту.

Использование и примеры заданий Linux crontab

Пример 1. Просмотр записей crontab

1. Просмотр записей crontab текущего вошедшего пользователя:

Синтаксис:

crontab -l

Вывод:

просмотр записей crontab

2. Просмотр записей crontab root: войдите как пользователь root (su – root).

Синтаксис:

crontab -l

Вывод:

cron-задания не перечислены

3. Просмотр записей crontab других пользователей Linux: войдите под root и следуйте синтаксису.

Синтаксис:

crontab -u [username] -l

Вывод:

  • просмотр cron-заданий пользователя

Пример 2. Редактирование записей crontab текущего пользователя

Чтобы отредактировать записи crontab, используйте crontab -e. По умолчанию это редактирует crontab текущего вошедшего пользователя.

Синтаксис:

crontab -e

Вывод:

crontab1

Пример 3. Планирование задания на определённое время

  • Базовое применение cron — выполнение задания в определённое время, как показано ниже. Это выполнит shell-скрипт полного резервного копирования (full-backup) 10 июня в 08:30 утра.
  • Поле времени использует 24-часовой формат. Так, для 8 утра используйте 8, а для 8 вечера — 20.

Синтаксис:

30 08 10 06 * /home/sujal/myscript.sh

Вывод:

crontab8

  • 30 – 30-я минута, 08 – 8 утра, 10 – 10-й день, 06 – 6-й месяц (июнь), * – каждый день недели.

Пример 4. Планирование задания на каждую минуту с помощью cron

В идеале, у вас может и не быть потребности планировать задание каждую минуту. Но понимание этого примера поможет вам разобраться с остальными примерами.

Синтаксис:

* * * * * <command-to-run>

Пример:

* * * * * /home/sujal/myscript.sh
  • Звёздочка * означает все возможные значения единиц — то есть каждую минуту каждого часа в течение всего года. Более полезным, чем прямое использование *, вы найдете её в следующих случаях.
  • Указание */5 в поле минут означает каждые 5 минут. Указание 0-10/2 в поле минут означает каждые 2 минуты в первые 10 минут. Таким образом, описанное соглашение можно использовать и для остальных 4 полей.

Пример 5. Планирование фонового cron-задания каждые 10 минут

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

Команда:

*/10 * * * * /home/sujal/myscript.sh

Вывод:

crontab4

  • Это выполняет указанную команду check-disk-space каждые 10 минут в течение всего года. Но у вас может быть потребность выполнять команду только в определённые часы — или наоборот.
  • Приведённые выше примеры показывают, как это делается. Вместо указания значений в 5 полях можно задать их с помощью одного ключевого слова, упомянутого ниже.
  • Есть особые случаи, когда вместо 5 полей можно использовать @ с ключевым словом — например, reboot, midnight, yearly или hourly.
Keyword    Equivalent
@yearly    0 0 1 1 *
@daily     0 0 * * *
@hourly    0 * * * *
@reboot    Run at startup.

Пример 6. Планирование задания более одного раза в день

Следующий скрипт выполняет инкрементальное резервное копирование дважды в день, каждый день. Этот пример выполняет указанный shell-скрипт инкрементального резервного копирования (incremental-backup) в 1:00 и 11:00 каждый день.

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

Команда:

00 1,11 * * * /home/sujal/myscript.sh

crontab2

  • 00 – 0-я минута (начало часа), 1,11 – 1 ночи и 11 утра, * – каждый день, * – каждый месяц, * – каждый день недели.

Пример 7. Планирование задания в пределах определённого диапазона времени

Подход 1: если вы хотите планировать задание на каждый час в пределах определённого диапазона времени, используйте следующее.

  • Cron-задание каждый день в рабочие часы: этот пример проверяет статус базы данных каждый день (включая выходные) в рабочие часы с 9 утра до 6 вечера.

Команда:

0 9 * * 1-5 /home/sujal/myscript.sh

Вывод:

crontab3

Подход 2: 00 – 0-я минута (начало часа), 09-18 – 9 утра, 10 утра, 11 утра, 12 дня, 1 дня, 2 дня, 3 дня, 4 дня, 5 дня, 6 вечера, * – каждый день, * – каждый месяц, * – каждый день недели.

  • Cron-задание в каждый рабочий день в рабочие часы: этот пример проверяет статус базы данных в каждый рабочий день (то есть исключая субботу и воскресенье) в рабочие часы с 9 утра до 6 вечера.

Команда:

00 09-18 * * 1-5 /home/sujal/myscript.sh
  • 00 – 0-я минута (начало часа), 09-18 – 9 утра, 10 утра, 11 утра, 12 дня, 1 дня, 2 дня, 3 дня, 4 дня, 5 дня, 6 вечера, * – каждый день, * – каждый месяц, 1-5 – понедельник, вторник, среда, четверг и пятница (каждый рабочий день).

Пример 8. Планирование задания на первую минуту каждого года с помощью @yearly

Если вы хотите, чтобы задание выполнялось в первую минуту каждого года, используйте cron-ключевое слово @yearly, как показано ниже.

  • Это выполнит ежегодное обслуживание системы с помощью shell-скрипта annual-maintenance в 00:00 1 января каждого года.

Команда:

@yearly /home/sujal/myscript.sh

Вывод:

crontab5

Пример 9. Планирование cron-задания в начале каждого месяца с помощью @monthly

Аналогично @yearly выше. Но команда выполняется раз в месяц с помощью cron-ключевого слова @monthly. Это выполнит shell-скрипт tape-backup в 00:00 1-го числа каждого месяца.

Команда:

@monthly /home/sujal/myscript.sh

Вывод:

crontab6

Пример 10. Планирование фонового задания каждый день с помощью @daily

Используя cron-ключевое слово @daily, это выполнит ежедневную очистку файлов журналов с помощью shell-скрипта cleanup-logs в 00:00 каждый день.

Команда:

@daily /home/sujal/myscript.sh

Вывод:

crontab7

Пример 11. Выполнение команды после каждой перезагрузки с помощью @reboot

Используя cron-ключевое слово @reboot, это выполнит указанную команду один раз после каждой загрузки машины.

Команда:

@reboot CMD

Возможности Linux crontab

1. Гибкое планирование

  • Позволяет планировать задачи на определённое время, интервалы, дни и месяцы.
  • Поддерживает сложные расписания для точного выполнения задач.

2. Автоматическое выполнение задач

  • Автоматически запускает команды или скрипты без вмешательства пользователя.
  • Идеально подходит для повторяющихся задач, таких как резервное копирование, обновления и обслуживание.

3. Пользовательская конфигурация

  • Каждый пользователь может вести отдельный файл crontab.
  • Позволяет персонализировать планирование задач в соответствии с индивидуальными требованиями.

4. Специальные индикаторы времени

  • Предоставляет предопределённые ключевые слова вроде @reboot, @daily и @weekly.
  • Упрощает настройку для регулярно повторяющихся задач.

cron linux bash