Как заставить Anacron запуститься надежно?

Так, я использую Anacron, чтобы смочь надежно запустить некоторые скрипты ежедневно. Однако это не работает, когда сам Anacron не запускает на начальной загрузке половину времени. Как я заставил бы Anacron запускать надежно?

> grep 'anacron' /var/log/syslog.2
May 18 19:09:02 s-laptop anacron[2480]: Job `cron.daily' terminated (exit status: 1) (mailing output)
May 18 19:09:02 s-laptop anacron[2480]: Can't find sendmail at /usr/sbin/sendmail, not mailing output
May 18 19:09:02 s-laptop anacron[2480]: anacron: Can't find sendmail at /usr/sbin/sendmail, not mailing output
May 18 19:09:02 s-laptop anacron[2480]: Normal exit (1 job run)
May 18 21:20:48 s-laptop systemd[1]: Started Run anacron jobs at resume.
May 20 16:30:46 s-laptop systemd[1]: Started Run anacron jobs at resume.
May 20 17:02:27 s-laptop systemd[1]: Started Run anacron jobs at resume.
May 20 18:58:50 s-laptop systemd[1]: Started Run anacron jobs at resume.
May 20 19:13:48 s-laptop systemd[1]: Started Run anacron jobs.
May 20 19:13:48 s-laptop anacron[734]: Anacron 2.3 started on 2017-05-20
May 20 19:13:48 s-laptop anacron[734]: Will run job `cron.daily' in 5 min.
May 20 19:13:48 s-laptop anacron[734]: Will run job `cron.weekly' in 10 min.
May 20 19:13:48 s-laptop anacron[734]: Jobs will be executed sequentially
May 20 19:18:51 s-laptop anacron[734]: Job `cron.daily' started
May 20 19:18:51 s-laptop anacron[2367]: Updated timestamp for job `cron.daily' to 2017-05-20
> grep 'anacron' /var/log/syslog.1
May 20 19:18:54 s-laptop anacron[734]: Job `cron.daily' terminated (exit status: 1) (mailing output)
May 20 19:23:48 s-laptop anacron[734]: Job `cron.weekly' started
May 20 19:23:48 s-laptop anacron[2606]: Updated timestamp for job `cron.weekly' to 2017-05-20
May 20 19:30:09 s-laptop anacron[734]: Job `cron.weekly' terminated
May 20 19:30:09 s-laptop anacron[734]: Normal exit (2 jobs run)
May 21 10:02:56 s-laptop systemd[1]: Started Run anacron jobs at resume.
May 25 12:53:39 s-laptop systemd[1]: Started Run anacron jobs at resume.
Jun  1 18:09:14 s-laptop systemd[1]: Started Run anacron jobs at resume.
Jun  3 12:29:40 s-laptop anacron[751]: Anacron 2.3 started on 2017-06-03
Jun  3 12:29:40 s-laptop anacron[751]: Will run job `cron.daily' in 5 min.
Jun  3 12:29:40 s-laptop anacron[751]: Will run job `cron.weekly' in 10 min.
Jun  3 12:29:40 s-laptop systemd[1]: Started Run anacron jobs.
Jun  3 12:29:40 s-laptop anacron[751]: Will run job `cron.monthly' in 15 min.
Jun  3 12:29:40 s-laptop anacron[751]: Jobs will be executed sequentially
Jun  3 12:34:40 s-laptop anacron[751]: Job `cron.daily' started
Jun  3 12:34:40 s-laptop anacron[2243]: Updated timestamp for job `cron.daily' to 2017-06-03
> grep 'anacron' /var/log/syslog
Jun  3 12:34:44 s-laptop anacron[751]: Job `cron.daily' terminated (mailing output)

Как видно в системном журнале, Anacron был только запущен при начальной загрузке 20-го мая и 3-го июня, несмотря на машину, загружаемую 21-го и 25-го мая и 1-го июня.

Кроме того, сегодня (3-го июня), я на самом деле загрузил свой компьютер в 12:11, и видя, что Anacron не запустился, и ни одно из моих заданий не было выполнено, я перезагрузил машину в 12:29. Вы видите на этой второй начальной загрузке, Anacron решил запуститься. Почему это просто не запускает много времени?

2
задан 3 June 2017 в 15:03

2 ответа

Редактирование : Это, кажется, было зафиксировано в восходящем направлении в Debian 10 и Ubuntu 19.04.

Так, кажется, что Anacron не работает при запуске, если на заряде батареи, и, как только планируют, будет работать в 7:30 иначе. Решение для меня состояло в том, чтобы настроить Anacron для выполнения, когда питание включается.

Это может быть сделано путем добавления сценария как это:

#!/bin/sh
test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null

я сохранил его в /etc/pm/power.d/10_anacron (удостоверьтесь, что это - исполняемый файл), который в более старых системах был бы выполнен автоматически при включении. На текущих версиях Ubuntu необходимо добавить правило udev запустить скрипт. Просто сохраните:

SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/etc/pm/power.d/10_anacron"

к /etc/udev/rules.d/anacron.rules.

4
ответ дан 2 December 2019 в 01:55

Более легкий путь: просто измените строку в файле /etc/default/anacron к:

ANACRON_RUN_ON_BATTERY_POWER=yes
1
ответ дан 2 December 2019 в 01:55

Другие вопросы по тегам:

Похожие вопросы: