Запутался в отношениях между cron и anacron
Я тщетно пытался найти общее объяснение того, как cron и anacron работают вместе. Страницы руководства слишком сложны для меня.
Я запутался, потому что я добавляю задачи в crontab, и это работает, но когда я удаляю их из crontab, они все равно запускаются под anacron. Я вижу задачи в /etc/cron.daily, но я не уверен, как они туда попали. Cron всегда работает в моей системе, но не Anacron. На самом деле я вижу, что анакрон запускается cron!
По сути, я хотел бы получить введение на уровне пользователя о том, как добавлять и удалять задачи, поскольку легко поддающиеся поиску ответы, которые говорят о том, что вам нужно отредактировать crontab, явно неполны. Ссылка на учебник будет в порядке.
1 ответ
И то и другое 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 минут после восстановления системы.
Несколько ссылок: