cron и crontab
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).
Как добавить ежедневную задачу
- Откройте свой crontab:
crontab -e - Добавьте строку, например: 30 2 * * *
/usr/local/bin/backup.sh>>/var/log/backup.log2>&1 - Сохраните и выйдите; cron автоматически подхватит изменения.
- Выведите список задач:
crontab -l
Осторожно
crontab -rудаляет весь crontab без подтверждения.- Протестируйте команду вручную от имени того же пользователя перед тем, как планировать её выполнение.
Связанные статьи
- Юниты systemd и systemctlЧто такое юнит systemd, основные типы юнитов, а также как запускать, останавливать, включать и проверять службы с помощью systemctl.
- logrotateЧто делает logrotate, как работает его конфигурация в /etc/logrotate.conf и /etc/logrotate.d, а также как безопасно протестировать правило.
- journalctl и журнал systemdКак читать логи с помощью journalctl, проверять объем занимаемого журналом места и безопасно очищать его с помощью опций --vacuum.
Источники
- crontab(5) man7.org
- crontab(5) (Debian) manpages.debian.org
- systemd.timer(5) man7.org
Последняя проверка: