デフォルトでは、無人アップグレードはanacronによってトリガーされ、AC電源で実行されている場合にのみ開始され、バッテリーで実行されている場合は開始されません。このビビアバーは、無駄な電力を避けるために理解しやすいです。とにかく、バッテリーを搭載したマシンでも無人アップグレードを開始できるようにしたいと思います。なぜなら、私を含む私の友人の一部の人々は常にバッテリーのみでラップトップを使用しているからです。次のトリックは16.04では機能しません。
ANACRON_RUN_ON_BATTERY_POWER=yes
に/etc/default/anacron
を設定します
Ubuntu 16.04の場合、anacron、または無人アップグレードをバッテリーで実行し始めることを許可する別の方法はありますか?
次のトピックのコツは16.04では機能しません: バッテリー(ラップトップ)でもアナクロンを実行
編集1:
要求に応じて、waltinatorのコメントからdpkg -L anacron | xargs grep -lwi power 2>/dev/null
コマンドを使用しました。次に、私はこのように変更しますが、変更はありません、無人アップグレードはまだバッテリーで開始されません:
。 /etc/init.d/anacron
の次の行をコメントします
# if test x"$ANACRON_RUN_ON_BATTERY_POWER" != x"yes" && test -x /usr/bin/on_ac_power
# then
# /usr/bin/on_ac_power >/dev/null
# if test $? -eq 1
# then
# log_progress_msg "deferred while on battery power"
# log_end_msg 0
# exit 0
# fi
#fi
バッテリーでもアナクロンを起動できるように長い間検索した後、私はあきらめました。マシンがバッテリで動作している場合に無人アップグレードを開始するスクリプトを見つけたからです。
マシンがバッテリーで動作している場合は、ラップトップに最適な無人アップグレードを実行します。ログイン時に実行するスクリプト。要件:
脚本 :
#!/bin/bash
sleep 6m
level=$(cat /sys/class/power_supply/BAT0/capacity)
status=$(cat /sys/class/power_supply/BAT0/status)
lastupdate=$(cat /var/log/unattended-upgrades/unattended-upgrades.log | grep `date -I` | tail -1)
# Exit if not discharging
if [ "${status}" != "Discharging" ]; then
exit 0
fi
# Exit if updated today
if [ -n "$lastupdate" ]; then
exit 0
fi
# Update
if [ "${level}" -ge 70 ]; then
Sudo apt update && Sudo unattended-upgrades
fi
16.04では、systemdファイルを作成してこれを実現できます。ファイルを作成する/etc/systemd/system/anacron.service.d/override.conf
次のコンテンツ:
[Unit]
ConditionACPower=
ConditionACPower=false
一部のcronjobは電源を個別に確認し、バッテリー電源での実行を拒否します。 /etc/cron.daily/mlocate
https://github.com/mvo5/unattended-upgrades/blob/master/data/50unattended-upgrades.Ubunt に従って、ファイルに次のオプションを追加できます/etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::OnlyOnACPower "false";
確認する Sudo unattended-upgrades --verbose
動作する場合