web-dev-qa-db-fra.com

Demandez à Unattended-Upgrade d'effectuer une vérification avant de redémarrer

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?

1
Karalga

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
1
Karalga

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";
  • "0" signifie désactivé
  • "> 0" est l'intervalle de temps en jours.

Cela désactive la mise à jour automatique à l'échelle du système.

1
A.B.