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

Последен преглед: