La mise à niveau sans assistance met à niveau et redémarre ma machine sans aucun problème. Cependant, j'ai un script python qui s'exécute rarement, mais quand il s'exécute, cela peut prendre des jours. Je voudrais suspendre les redémarrages automatiques pendant l'exécution de ce script.
Quelle est la manière la plus simple d'y parvenir?
J'ai décidé de créer un script qui vérifie si python est en cours d'exécution et crée et supprime un fichier de remplacement de configuration en conséquence. Bien sûr, le test du programme python en cours d'exécution peut être plus précis, par exemple en utilisant -f /proc/$(cat something.pid)/status
.
Les fichiers bash sont:
#! /bin/bash
case "$(pgrep -xc python)" in
0) echo "No python running, ok to reboot" >> /root/scripts/pythonCheck.log
if [ -e "/etc/apt/apt.conf.d/60dontreboot" ]; then
rm "/etc/apt/apt.conf.d/60dontreboot"
fi
;;
*) echo "Python is running, shouldn't reboot" >> /root/scripts/pythonCheck.log
if [ ! -e "/etc/apt/apt.conf.d/60dontreboot" ]; then
echo 'Unattended-Upgrade::Automatic-Reboot "false"' > /etc/apt/apt.conf.d/60dontreboot
fi
;;
esac
Dans mon cas, j'ai défini le redémarrage automatique à 4 heures du matin (également dans 50 mises à niveau sans assistance), j'ai donc ajouté une crontab pour exécuter le script ci-dessus à 3h59 du matin. Je suis content de perdre une minute de travail; mon script python ne commencera que quelques minutes plus tard.
L'entrée crontab est:
59 3 * * * /root/scripts/pythonCheck.sh
Vous pouvez utiliser la configuration dans ce fichier (thx @ mur ):
/etc/apt/apt.conf.d/50unattended-upgrades
et cette ligne:
Unattended-Upgrade::Automatic-Reboot "false";
Dans un Shell, je ferais cela:
Sudo sed -i 's/^Unattended-Upgrade::Automatic-Reboot "true";$/Unattended-Upgrade::Automatic-Reboot "false";/g' /etc/apt/apt.conf.d/50unattended-upgrades
Créez un script pour cela et démarrez votre programme à l'intérieur du script. S'il est terminé, annulez les modifications.
Ou vous pouvez utiliser ce fichier:
/etc/apt/apt.conf.d/10periodic
et cette ligne:
APT::Periodic::Unattended-Upgrade "0";
Cela désactive la mise à jour automatique à l'échelle du système.