Как запланировать задачи в Linux с помощью crontab
Быстрые ссылки
- Открытие crontab
- Добавление новых задач
- Множественные значения и диапазоны
- Сохранение файла
- Шпаргалка и советы

Cron — это демон в Linux, который запускает задачи в фоновом режиме в заданные моменты времени. Это аналог Планировщика задач в Windows. Вы добавляете задания в файлы crontab с использованием простого синтаксиса, и cron будет запускать их автоматически.
Crontab удобно применять для резервного копирования, обслуживания системы и других повторяющихся задач. Синтаксис гибкий: задача может выполняться каждые 15 минут или в определённую минуту конкретного дня года.
Открытие crontab

Откройте терминал через меню приложений вашей среды рабочего стола. В Ubuntu нажмите Dash, введите «Terminal» и нажмите Enter.

Используйте команду crontab -e, чтобы открыть crontab для вашего пользователя. Команды в этом файле будут выполняться с правами вашего пользователя. Чтобы открыть crontab для root и запускать команды с системными правами, выполните sudo crontab -e. Если в вашей системе нет sudo, используйте su -c "crontab -e".

Система может предложить выбрать редактор. Если Nano доступен, введите его номер и нажмите Enter. Vi и другие редакторы предпочтительны для опытных пользователей, но Nano проще для начала.

В Nano вы увидите заголовок «GNU nano» в верхней части окна терминала. Если вместо этого открылся vi, а вы не хотите им пользоваться — закройте vi, установите Nano как редактор и откройте crontab повторно.

Чтобы выйти из vi без сохранения, введите :quit и нажмите Enter. Затем выполните export EDITOR=nano в терминале и снова crontab -e, чтобы редактировать crontab в Nano по умолчанию.
Important: Файл crontab для каждого пользователя отдельный.
crontab -eредактирует текущего пользователя;sudo crontab -e— root. Проверяйте, с какими правами должна запускаться команда.
Добавление новых задач

В Nano прокрутите файл до конца. Строки, начинающиеся с #, — комментарии: cron их игнорирует. Комментарии полезны для человека, который будет редактировать файл.

Строки в crontab записываются в следующем порядке с допустимыми значениями:
minute(0-59) hour(0-23) day(1-31) month(1-12) weekday(0-6) command
Каждое поле разделяется пробелом или табом. Вместо конкретного числа можно использовать * — это означает «каждое значение» для данного поля. Например, * в поле месяца приведёт к запуску команды каждый месяц.
Пример из исходного материала (с сохранённой формой):
29 0 * /usr/bin/example
Примечание: обычно для запуска в 00:30 указывают 30 в поле минут (то есть 30 0 * * * /usr/bin/example). Всегда проверьте, что вы указываете правильное значение минут, так как счёт минут в crontab ведётся от 0 до 59.
Множественные значения и диапазоны
Несколько конкретных значений
Чтобы указать несколько значений, перечислите их через запятую.
0,14,29,44 /usr/bin/example2
Эта строка запускает /usr/bin/example2 на 0-, 14-, 29- и 44-й минуте каждого часа. Часто перечисление используют для «каждые 15 минут», однако корректнее для этого применять шаги (см. ниже) или явно указывать значения.
Диапазоны
Через дефис можно задать диапазон значений.
0 11 1-6 /usr/bin/example3
Эта строка запускает /usr/bin/example3 в 11:00 каждый день, но только в первые шесть месяцев года (январь–июнь).
Шаги (частые сокращения)
Вы можете указать шаги с помощью слэша /.
/15 * /usr/bin/example4
Эта строка запускает /usr/bin/example4 каждые 15 минут. Шаги удобны, когда нужно регулярное повторение.
Note: В crontab поле weekday обычно 0–6, где 0 или 7 — воскресенье в разных реализациях. Уточните в man cron для вашей системы.
Сохранение файла
Когда вы закончите редактирование в Nano:
- Нажмите Ctrl-O и Enter для сохранения.
- Затем Ctrl-X для выхода.

После сохранения вы увидите сообщение crontab: installing new crontab, подтверждающее установку нового расписания.
Проверка, отладка и логи
- Просмотрите системный журнал:
journalctl -u cronилиjournalctl -u crondв системах с systemd. В некоторых дистрибутивах журнал cron пишется в/var/log/syslogили/var/log/cron. - В crontab перенаправляйте стандартный вывод и ошибки в лог-файлы:
/usr/bin/example >> /var/log/example.log 2>&1. - Для теста запуск выполните команду вручную в том же окружении, в котором должна работать cron-задача.
Важно: cron запускает команды с ограниченным окружением. Переменные окружения (например, PATH) могут отличаться от вашего интерактивного сеанса. Лучше указывать полные пути до исполняемых файлов и задавать PATH вверху crontab, если нужно.
Альтернативы и когда crontab не подходит
- systemd timers — современная альтернатива для сервисов и таймеров, лучше интегрирована с systemd. Используйте systemd, если вам нужны зависимость от состояния сервисов, более точная интеграция с логированием и управление тайм-аутами.
- at/batch — однократное или отложенное выполнение задач.
- Управление задачами через оркестраторы (Kubernetes CronJob) для контейнерных окружений.
Шпаргалка: частые примеры
- Каждую минуту:
- /path/to/command
- Каждые 15 минут:
/15 * /path/to/command
- В 03:30 каждый день:
30 3 * /path/to/command
- Каждый понедельник в 05:00:
0 5 1 /path/to/command
- Каждый 1-й день месяца в 02:00:
0 2 1 /path/to/command
Роли и чеклист при деплое crontab
Для разработчика:
- Указать полные пути до команд
- Перенаправить stdout/stderr в лог
- Проверить переменные окружения (PATH)
Для оператора:
- Проверить запись в журнале cron после первого запуска
- Убедиться, что файлы логов ротацируются
- Настроить права доступа к скриптам
Краткая справка — ключевые значения
- Минуты: 0–59
- Часы: 0–23
- День месяца: 1–31
- Месяц: 1–12
- День недели: 0–6 (0 или 7 — воскресенье на некоторых системах)
Примеры отказов и как их лечить
- Скрипт не запускается: проверьте полный путь до интерпретатора (например,
#!/usr/bin/env bash) и права на выполнение. - Ничего не логируется: перенаправьте вывод в лог и проверьте права на запись в этот файл.
- Задача запускается, но ведёт себя иначе: сравните переменные окружения cron и вашего интерактивного сеанса.
Мини-методология для внедрения crontab в проект
- Спланируйте, какие задачи нужны и с какими правами они должны выполняться.
- Напишите и протестируйте скрипты локально от нужного пользователя.
- Оформите crontab-запись с полными путями и перенаправлением логов.
- Внедрите запись в crontab и проверьте через логи.
- Настройте ротацию логов и мониторинг выполнения.
Безопасность и конфиденциальность
- Не храните пароли в crontab в открытом виде.
- Ограничьте права на скрипты и логи (chmod 700/600 по необходимости).
- Для задач, требующих секретов, используйте менеджеры секретов и передавайте переменные безопасно.
Сравнение crontab и systemd timers (вкратце)
- Интеграция: systemd лучше интегрирован с системой и логированием.
- Простота: crontab проще для быстрых однофайловых расписаний.
- Надёжность: systemd предоставляет больше контроля над зависимостями и перезапусками.
Критерии приёмки
- Задача выполняется в ожидаемое время в течение 24–48 часов после установки.
- Логи содержат успешные записи выполнения и возможные ошибки.
- Скрипт корректно завершает работу, не оставляя сторонних процессов.
Быстрые подсказки
- Всегда указывайте абсолютные пути.
- Тестируйте команды вручную до добавления в crontab.
- Перенаправляйте вывод в отдельные логи для анализа.
Ресурсы и дальше
Связано: Docker для начинающих: всё, что нужно знать
| | Команды Linux | | Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr | | | Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | | | Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld | |
RELATED: Лучшие ноутбуки для разработчиков и энтузиастов Linux
Краткое резюме:
- Crontab — надёжный и простой инструмент для периодических задач.
- Используйте полные пути, перенаправляйте логи и тестируйте вручную.
- Для сложных сценариев рассмотрите systemd timers.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента