web-dev-qa-db-ja.com

バッテリーでの実行でも無人アップグレードを開始するにはどうすればよいですか?

デフォルトでは、無人アップグレードは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
1
NicolasSmith

バッテリーでもアナクロンを起動できるように長い間検索した後、私はあきらめました。マシンがバッテリで動作している場合に無人アップグレードを開始するスクリプトを見つけたからです。

マシンがバッテリーで動作している場合は、ラップトップに最適な無人アップグレードを実行します。ログイン時に実行するスクリプト。要件:

  • 無人アップグレードがインストールされ、有効になっている( link
  • 無人アップグレードとapt更新をパスワードなしで実行できるようにするsudoersでプロンプトを表示する( link
  • ログイン時にスクリプトを実行する( link

脚本 :

#!/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
0
NicolasSmith

16.04では、systemdファイルを作成してこれを実現できます。ファイルを作成する/etc/systemd/system/anacron.service.d/override.conf次のコンテンツ:

[Unit]
ConditionACPower=
ConditionACPower=false

一部のcronjobは電源を個別に確認し、バッテリー電源での実行を拒否します。 /etc/cron.daily/mlocate

0
Nick

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動作する場合

0
Martin