Запутался в отношениях между cron и anacron

19

Я тщетно пытался найти общее объяснение того, как cron и anacron работают вместе. Страницы руководства для меня слишком глубокие.

Я запутался, потому что я добавляю задачи в crontab, и это работает, но когда я удаляю их из crontab, они все равно запускаются под anacron. Я вижу задачи в /etc/cron.daily, но я не уверен, как они туда попали. Cron всегда работает в моей системе, но не Anacron. На самом деле я вижу, что анакрон запускается cron!

По сути, я хотел бы получить введение на уровне пользователя о том, как добавлять и удалять задачи, так как легко доступные для поиска ответы, которые говорят о том, что вам нужно отредактировать crontab, явно неполны. Ссылка на учебник будет в порядке.

Органический мрамор
источник

Ответы:

19

Оба 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.sh15 минут после восстановления системы.

Несколько ссылок:

Рон
источник
Спасибо, что урок Digital Ocean особенно хорош, как это часто бывает. Не уверен, как я это пропустил, поэтому я ценю ссылку.
Органический мрамор
Благодарю. "Cron.daily запускает anacron Everyhour", а вы, мужчина, вместо этого "cron.daily запускает anacron daily"?
Тим
Спасибо за это. - Я удалил anacronвсе VPS, так как они всегда включены. (Вообще не знаю, как он туда попал, я не слышал об этом.) Мои crontabзаписи (ежедневно, еженедельно, ...) теперь все работают в ожидаемое время.
Адамэн