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 са алтернатива с регистриране в journal, рандомизирани закъснения и наваксване на пропуснати изпълнения (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
Последен преглед: