web-dev-qa-db-ja.com

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)

Syslogからわかるように、Anacronは5月21日と25日と6月1日に起動されたにもかかわらず、5月20日と6月3日の起動時にのみ開始されました。

さらに、今日(6月3日)、実際にコンピューターを12:11に起動し、Anacronが起動せず、ジョブが実行されなかったことを確認して、12:29にマシンを再起動しました。この2回目の起動でわかるように、Anacronは起動を決定しました。多くの場合、起動しないのはなぜですか?

2
Sam Bull

編集:これは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
Sam Bull

より簡単な方法:ファイル/etc/default/anacronの行を次のように変更するだけです:

ANACRON_RUN_ON_BATTERY_POWER=yes
1
mzuther