Оба cron
и anacron
являются демонами, которые могут планировать выполнение повторяющихся задач на определенный момент времени, определенный пользователем.
Основное различие между cron
и anacron
заключается в том, что первое предполагает, что система работает непрерывно. Если ваша система выключена, и у вас запланировано задание на это время, оно никогда не будет выполнено.
С другой стороны, anacron
это «анахронизм» и предназначен для систем, которые не работают 24x7. Для его работы anacron
используются файлы с метками времени, чтобы узнать, когда в последний раз выполнялись его команды. Он также поддерживает файл, /etc/anacrontab
как и cron
делает. Кроме того, cron.daily
работает анакрон каждый день. Следовательно, anacron
можно выполнять задание только один раз в день, но cron
можно запускать так же часто, как каждую минуту.
От man anacrontab
:
При выполнении Anacron считывает список заданий из файла конфигурации, обычно / etc / anacrontab (см. Anacrontab (5)). Этот файл содержит список заданий, которые контролирует Anacron. Каждая запись задания указывает период в днях, задержку в минутах, уникальный идентификатор задания и команду оболочки.
Для каждого задания Anacron проверяет, было ли это задание выполнено за последние n дней, где n - период, указанный для этого задания. Если нет, Anacron запускает команду оболочки задания, ожидая количество минут, указанное в качестве параметра задержки.
После завершения команды Anacron записывает дату в специальный файл метки времени для этого задания, чтобы он мог знать, когда его выполнить снова. Только дата используется для расчета времени. Час не используется.
Это означает, что если задание запланировано на ежедневное выполнение, и компьютер был выключен в это время, когда запускается anacron, он может увидеть, что задание было выполнено в последний раз более 24 часов назад, и выполнить его правильно.
Например, если вы укажете следующее в /etc/anacrontab
:
7 15 test.daily /bin/sh /home/username/script.sh
и в тот день, когда script.sh
задание должно быть выполнено, если система не запущена, она anacron
будет выполнена через script.sh
15 минут после восстановления системы.
Несколько ссылок: