Par défaut, les mises à niveau sans assistance sont déclenchées par anacron et ne démarrent que lorsqu'elles fonctionnent sur courant alternatif et ne démarrent pas lorsqu'elles fonctionnent sur batterie. Ce comportement est facile à comprendre pour éviter le gaspillage d'énergie. Quoi qu'il en soit, je souhaite permettre aux mises à niveau sans assistance de démarrer même si la machine fonctionne sur batterie, car certains de mes amis, dont moi, utilisent toujours leur ordinateur portable uniquement sur batterie. L'astuce suivante ne fonctionne pas sur 16.04:
Ensemble ANACRON_RUN_ON_BATTERY_POWER=yes
dans /etc/default/anacron
Pour Ubuntu 16.04, existe-t-il un autre moyen de permettre à anacron, ou aux mises à niveau sans assistance, de commencer même à fonctionner sur batterie?
Les astuces sur le sujet suivant ne fonctionnent pas sur 16.04: exécuter anacron même sur batterie (ordinateur portable)
Modifier 1:
Comme demandé, j'ai utilisé la commande dpkg -L anacron | xargs grep -lwi power 2>/dev/null
du commentaire de waltinator. Ensuite, je change comme ça, mais pas de changement, les mises à niveau sans assistance ne démarrent toujours pas sur batterie:
. Commentez les lignes suivantes dans /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
Après avoir cherché longtemps pour permettre à anacron de démarrer même sur batterie, j'abandonne. Parce que j'ai trouvé un script pour démarrer des mises à niveau sans assistance si la machine fonctionne sur batterie, ce que je voulais à l'origine.
Exécutez les mises à niveau sans assistance si la machine fonctionne sur batterie, parfaite pour un ordinateur portable. Script à exécuter lors de la connexion. Exigence:
Script:
#!/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
Le 16.04, vous pouvez écrire un fichier systemd pour y parvenir. Créez le fichier /etc/systemd/system/anacron.service.d/override.conf
avec le contenu suivant:
[Unit]
ConditionACPower=
ConditionACPower=false
Notez que certains cronjobs vérifient indépendamment la source d'alimentation et refusent de fonctionner sur batterie, par ex. /etc/cron.daily/mlocate
selon https://github.com/mvo5/unattended-upgrades/blob/master/data/50unattended-upgrades.Ubunt vous pouvez ajouter l'option suivante au fichier /etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::OnlyOnACPower "false";
vérifier avec Sudo unattended-upgrades --verbose
si ça marche