Como fazer a inicialização do Anacron de forma confiável?

2

Então, estou usando o Anacron para poder executar alguns scripts diariamente. No entanto, isso não funciona quando o próprio Anacron não inicia na inicialização na metade do tempo. Como eu conseguiria que o Anacron começasse de forma confiável?

> 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)

Como pode ser visto no syslog, o Anacron só foi iniciado na inicialização em 20 de maio e 3 de junho, apesar da máquina ser inicializada em 21 e 25 de maio e 1º de junho.

Além disso, hoje (3 de junho), eu inicializei meu computador às 12:11, e vendo que o Anacron não tinha iniciado e nenhum de meus trabalhos foi executado, reiniciei a máquina às 12:29. Você pode ver nesta segunda inicialização, Anacron decidiu iniciar. Por que isso simplesmente não inicia a maior parte do tempo?

    
por Sam Bull 03.06.2017 / 14:03

2 respostas

4

Então, parece que o Anacron não roda na inicialização se estiver usando energia da bateria, e está programado para ser executado às 7h30 da outra forma. A solução para mim foi configurar o Anacron para ser executado quando a energia estiver conectada.

Isso pode ser feito adicionando um script como este:

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

Salvei-o em /etc/pm/power.d/10_anacron (verifique se ele é executável), o que em sistemas mais antigos seria executado automaticamente quando conectado. Nas versões atuais do Ubuntu, você precisa adicionar uma regra do udev para executar o script. Apenas salve:

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

para /etc/udev/rules.d/anacron.rules .

    
por Sam Bull 05.06.2017 / 19:27
1

Uma maneira mais fácil: basta alterar uma linha no arquivo /etc/default/anacron para:

ANACRON_RUN_ON_BATTERY_POWER=yes
    
por mzuther 27.08.2017 / 12:19