Rain WikiWindows · Linux · Android

cron и crontab

СлужбаБольшинство дистрибутивов Linux

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

1Поля времени

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

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

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

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

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

4таймеры 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 без подтверждения.
  • Протестируйте команду вручную от имени того же пользователя перед тем, как планировать её выполнение.

Источники

  1. crontab(5) man7.org
  2. crontab(5) (Debian) manpages.debian.org
  3. systemd.timer(5) man7.org

Последняя проверка: