Гид по технологиям

Как запланировать задачи в Linux с помощью crontab

• 8 min read • Linux • Обновлено 26 Nov 2025
Запланировать задачи в Linux с crontab
Запланировать задачи в Linux с crontab

Быстрые ссылки

  • Открытие crontab
  • Добавление новых задач
  • Множественные значения и диапазоны
  • Сохранение файла
  • Шпаргалка и советы

Как запланировать задачи в Linux: введение в файлы crontab

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

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

Открытие crontab

Открытие терминала в Ubuntu через меню приложений

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

Запуск crontab -e в терминале

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

Выбор текстового редактора при открытии crontab (Nano/Vi)

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

Nano в терминале при редактировании crontab

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

Выход из vi и установка Nano как редактора для crontab

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

Important: Файл crontab для каждого пользователя отдельный. crontab -e редактирует текущего пользователя; sudo crontab -e — root. Проверяйте, с какими правами должна запускаться команда.

Добавление новых задач

Прокрутка файла crontab в Nano, строки с комментариями

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

Пример строки crontab с командой для исполнения

Строки в 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

После сохранения вы увидите сообщение 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 в проект

  1. Спланируйте, какие задачи нужны и с какими правами они должны выполняться.
  2. Напишите и протестируйте скрипты локально от нужного пользователя.
  3. Оформите crontab-запись с полными путями и перенаправлением логов.
  4. Внедрите запись в crontab и проверьте через логи.
  5. Настройте ротацию логов и мониторинг выполнения.

Безопасность и конфиденциальность

  • Не храните пароли в 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.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро