Итак, я использую 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)
Как видно из syslog, Anacron запускался только при загрузке 20 мая и 3 июня, несмотря на загрузку машины 21 и 25 мая и 1 июня.
Кроме того, сегодня (3 июня), я фактически загрузил свой компьютер в 12:11, и, увидев, что Anacron не запустился, и ни одна из моих заданий не была запущена, я перезагрузил машину на 12 : 29. Вы можете увидеть эту вторую загрузку, Anacron решил запустить. Почему это просто не запускается много времени?
Таким образом, кажется, что 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.
Простейший способ: просто измените строку в файле /etc/default/anacron на:
ANACRON_RUN_ON_BATTERY_POWER=yes
Простейший способ: просто измените строку в файле /etc/default/anacron на:
ANACRON_RUN_ON_BATTERY_POWER=yes
Простейший способ: просто измените строку в файле /etc/default/anacron на:
ANACRON_RUN_ON_BATTERY_POWER=yes