Rain Wiki · Linux

cron и crontab

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

Linux · Rain Wiki

cron — это классический демон Unix, который выполняет команды по расписанию. У каждого пользователя есть crontab, редактируемый с помощью crontab -e, в котором каждая строка содержит пять полей времени (минута, час, день месяца, месяц, день недели), за которыми следует команда. Системные задачи находятся в /etc/crontab и /etc/cron.d/.

Поля времени

'30 2 * * *' означает 02:30 каждый день; '*/10 * * * *' каждые десять минут; '0 9 * * 1' 09:00 каждый понедельник. День недели 0 и 7 — это воскресенье.

Системные файлы

Файлы в /etc/cron.d/ и /etc/crontab имеют дополнительное поле — имя пользователя — между временем и командой. В таких каталогах, как /etc/cron.daily, хранятся скрипты, запускаемые раз в день.

Распространенные ошибки

cron запускается с минимальным окружением: используйте полные пути или задайте PATH в crontab. Вывод отправляется владельцу по почте или теряется; перенаправляйте его в файл журнала. Символ % имеет особое значение в строках crontab и должен быть экранирован как \%.

таймеры systemd

В дистрибутивах с systemd модули .timer являются альтернативой с ведением журнала, рандомизированными задержками и выполнением пропущенных задач (Persistent=true).

Как добавить ежедневную задачу

  1. Откройте свой crontab: crontab -e
  2. Добавьте строку, например: 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. Сохраните и выйдите; cron автоматически подхватит изменения.
  4. Выведите список задач: crontab -l

Осторожно

  • 'crontab -r' удаляет весь crontab без подтверждения.
  • Протестируйте команду вручную от имени того же пользователя перед тем, как планировать её выполнение.

Источники

Обновлено: 2026-10-08

Связанные статьи