LoginSignup
1
0

More than 1 year has passed since last update.

Ubuntuのunattended-upgradesが「WARNING System is on battery power, stopping」で動いて無かった

Last updated at Posted at 2021-07-19

最近のUbuntuではunattended-upgradesでセキュリティ更新をanacronから自動で適用することができるように初期で設定されています。

他にも一通りの動きを調べました。

事象

自身のUbuntu環境のunattended-upgradesのログを見ると以下のようなメッセージが出ていました。

/var/log/unattended-upgrades/unattended-upgrades.log
2021-07-04 21:57:47,276 WARNING System is on battery power, stopping
2021-07-05 06:20:17,150 WARNING System is on battery power, stopping

もしかして動いて無いかと思い、試しに unattended-upgrade を直接打ってみても同じメッセージで動いて無いです。

$  sudo unattended-upgrade --dry-run --verbose
System is on battery power, stopping

原因

以下で停止しているようです。

def should_stop():
    # type: () -> bool
    """
    Return True if u-u needs to stop due to signal received or due to the
    system started to run on battery.
    """
    if SIGNAL_STOP_REQUEST:
        logging.warning("SIGNAL received, stopping")
        return True
    try:
        if apt_pkg.config.find_b("Unattended-Upgrade::OnlyOnACPower", True) \
           and subprocess.call("on_ac_power") == 1:
            logging.warning("System is on battery power, stopping")
            return True

特にこの部分見てみれば良さそうです。

 if apt_pkg.config.find_b("Unattended-Upgrade::OnlyOnACPower", True) \
           and subprocess.call("on_ac_power") == 1:

対応

on_ac_power

まずは subprocess.call("on_ac_power") == 1 から。

Manで見てみると以下の通り。

$ man on_ac_power
ON_AC_POWER(1)                                 General Commands Manual
NAME
       on_ac_power - test whether computer is running on AC power

SYNOPSIS
       on_ac_power

DESCRIPTION
       on_ac_power checks whether the system is running on abundant power (such as AC mains, an USB charger, etc), as
       opposed to battery power.

OPTIONS
       None.

EXIT STATUS
       0 (true)  System is on mains power
       1 (false) System is not on mains power
       255 (false)    Power status could not be determined
~省略~

実際に自身の環境で叩いてみると 1 となっています。

$ on_ac_power;echo $?
1

ここは変更する内容でも無いのでそのままにします。

Unattended-Upgrade::OnlyOnACPower

次に nattended-Upgrade::OnlyOnACPower です。

ずっとコード繋ぎっぱなしのマシンなのですが、こちらがデフォルトでTrueとなっていました。

/etc/apt/apt.conf.d/50unattended-upgrades
// Download and install upgrades only on AC power
// (i.e. skip or gracefully stop updates on battery)
// Unattended-Upgrade::OnlyOnACPower "true";

これをFalseに変えます。

Unattended-Upgrade::OnlyOnACPower "false";

確認

後は実際に動かして確認しておきます。

# DryRun
sudo unattended-upgrade -d dry-run

# 即時実行
sudo unattended-upgrade -d
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0