Источник: crontab in Linux
GeeksforGeeks · обновлено 23 января 2026
Команда crontab в Linux используется для создания, редактирования и управления запланированными задачами (cron jobs), которые автоматически выполняются в указанное время или с заданным интервалом. Она позволяет пользователям автоматизировать повторяющиеся системные и административные задачи без ручного вмешательства.
- Используется для планирования повторяющихся заданий
- Запускает задачи автоматически в фоне
- Использует формат планирования на основе времени
- Обычно применяется для резервного копирования, обновлений и задач обслуживания
Проверьте crontab для планирования заданий в Linux.
Синтаксис:
systemctl status cronВывод:
Показывает, активна (running), неактивна (inactive) или остановлена служба cron.
Crontab позволяет пользователям планировать запуск команд или скриптов автоматически в фиксированное время или с регулярными интервалами. Следующие пункты объясняют, как crontab функционирует в системе Linux.
- Каждый пользователь системы 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 или путь к скрипту.
1. Просмотр записей crontab текущего вошедшего пользователя:
Синтаксис:
crontab -lВывод:
2. Просмотр записей crontab root: войдите как пользователь root (su – root).
Синтаксис:
crontab -lВывод:
3. Просмотр записей crontab других пользователей Linux: войдите под root и следуйте синтаксису.
Синтаксис:
crontab -u [username] -lВывод:
Чтобы отредактировать записи crontab, используйте crontab -e. По умолчанию это редактирует crontab текущего вошедшего пользователя.
Синтаксис:
crontab -eВывод:
- Базовое применение cron — выполнение задания в определённое время, как показано ниже. Это выполнит shell-скрипт полного резервного копирования (full-backup) 10 июня в 08:30 утра.
- Поле времени использует 24-часовой формат. Так, для 8 утра используйте 8, а для 8 вечера — 20.
Синтаксис:
30 08 10 06 * /home/sujal/myscript.shВывод:
- 30 – 30-я минута, 08 – 8 утра, 10 – 10-й день, 06 – 6-й месяц (июнь), * – каждый день недели.
В идеале, у вас может и не быть потребности планировать задание каждую минуту. Но понимание этого примера поможет вам разобраться с остальными примерами.
Синтаксис:
* * * * * <command-to-run>
Пример:
* * * * * /home/sujal/myscript.sh
- Звёздочка
*означает все возможные значения единиц — то есть каждую минуту каждого часа в течение всего года. Более полезным, чем прямое использование*, вы найдете её в следующих случаях. - Указание */5 в поле минут означает каждые 5 минут. Указание 0-10/2 в поле минут означает каждые 2 минуты в первые 10 минут. Таким образом, описанное соглашение можно использовать и для остальных 4 полей.
Используйте следующую команду, если хотите проверять дисковое пространство каждые 10 минут.
Команда:
*/10 * * * * /home/sujal/myscript.sh
Вывод:
- Это выполняет указанную команду 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.
Следующий скрипт выполняет инкрементальное резервное копирование дважды в день, каждый день. Этот пример выполняет указанный shell-скрипт инкрементального резервного копирования (incremental-backup) в 1:00 и 11:00 каждый день.
- Значение, разделённое запятыми в поле, указывает, что команда должна выполняться во все упомянутые моменты времени.
Команда:
00 1,11 * * * /home/sujal/myscript.sh
- 00 – 0-я минута (начало часа), 1,11 – 1 ночи и 11 утра, * – каждый день, * – каждый месяц, * – каждый день недели.
Подход 1: если вы хотите планировать задание на каждый час в пределах определённого диапазона времени, используйте следующее.
- Cron-задание каждый день в рабочие часы: этот пример проверяет статус базы данных каждый день (включая выходные) в рабочие часы с 9 утра до 6 вечера.
Команда:
0 9 * * 1-5 /home/sujal/myscript.sh
Вывод:
Подход 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 – понедельник, вторник, среда, четверг и пятница (каждый рабочий день).
Если вы хотите, чтобы задание выполнялось в первую минуту каждого года, используйте cron-ключевое слово @yearly, как показано ниже.
- Это выполнит ежегодное обслуживание системы с помощью shell-скрипта annual-maintenance в 00:00 1 января каждого года.
Команда:
@yearly /home/sujal/myscript.sh
Вывод:
Аналогично @yearly выше. Но команда выполняется раз в месяц с помощью cron-ключевого слова @monthly. Это выполнит shell-скрипт tape-backup в 00:00 1-го числа каждого месяца.
Команда:
@monthly /home/sujal/myscript.sh
Вывод:
Используя cron-ключевое слово @daily, это выполнит ежедневную очистку файлов журналов с помощью shell-скрипта cleanup-logs в 00:00 каждый день.
Команда:
@daily /home/sujal/myscript.sh
Вывод:
Используя cron-ключевое слово @reboot, это выполнит указанную команду один раз после каждой загрузки машины.
Команда:
@reboot CMD
- Позволяет планировать задачи на определённое время, интервалы, дни и месяцы.
- Поддерживает сложные расписания для точного выполнения задач.
- Автоматически запускает команды или скрипты без вмешательства пользователя.
- Идеально подходит для повторяющихся задач, таких как резервное копирование, обновления и обслуживание.
- Каждый пользователь может вести отдельный файл crontab.
- Позволяет персонализировать планирование задач в соответствии с индивидуальными требованиями.
- Предоставляет предопределённые ключевые слова вроде @reboot, @daily и @weekly.
- Упрощает настройку для регулярно повторяющихся задач.











