web-dev-qa-db-fra.com

Les mises à niveau sans surveillance en attente de redémarrage empêchent l'utilisateur de se déconnecter

En exécutant Ubuntu 14.04 dans une salle informatique publique, j'ai activé les mises à niveau sans surveillance et configuré pour redémarrer à 02h00 dans la nuit. Les ordinateurs sont à double amorçage. Un utilisateur doit donc redémarrer l’ordinateur pour amorcer l’autre système d’exploitation. Toutefois, si uu avait installé des mises à jour et l’a configuré pour le redémarrer, les utilisateurs ne pourraient pas le faire eux-mêmes. sur l’icône représentant une roue dentée, puis choisissez arrêt et redémarrage, le système ne fait tout simplement rien.

Si je me connecte en tant qu'utilisateur root et que j'essaie d'émettre une commande de redémarrage, la réponse est "un autre arrêt est déjà en attente". Je dois donc arrêter -c pour l'annuler et pouvoir ensuite redémarrer. Ce n’est évidemment pas ce que je veux, car les utilisateurs devraient pouvoir redémarrer à tout moment sans intervention de ma part (ou racine).

Quelqu'un pourrait-il m'aider à atteindre mon objectif (= avez-vous configuré pour une installation automatique et un redémarrage à 2 heures du soir, permettant aux utilisateurs de redémarrer/arrêter à leur guise, sans leur donner les autorisations root)?

Merci beaucoup,

Andrea

1
Angus73

Empêcher les mises à jour automatiques de redémarrer l'ordinateur

Unattended-Upgrades est actuellement configuré pour redémarrer l'ordinateur à 02h00 si la mise à jour nécessite un redémarrage. Cette étape va arrêter ce comportement.

Étape: éditez le fichier /etc/apt/apt.conf.d/50unattended-upgrades

Dans le fichier, recherchez la ligne:

unattended-Upgrade::Automatic-Reboot "true";

et le faire ressembler à:

Unattended-Upgrade::Automatic-Reboot "false";

Créez un script bash pour vérifier si un redémarrage est requis et faites-le si nécessaire

Le script ci-dessous vérifie si le fichier reboot-required existe et, le cas échéant, redémarre l'ordinateur immédiatement. Appelons ce fichier reboot_if_needed.sh.

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
        echo $(date) Sytem restart required by: $(cat /var/run/reboot-required.pkgs)
        /sbin/reboot now
fi

Enregistrez ce fichier sous /opt/bin/reboot_if_needed.sh

Rendre ce fichier exécutable:

Sudo chmod + x /opt/bin/reboot_if_needed.sh

Explication

Lorsque le script est exécuté et que le fichier var/run/reboot-required existe, il génère du texte qui sera capturé dans un fichier journal /var/log/reboot_history.log. Ensuite, le système va redémarrer.

Horaire reboot_if_needed.sh tous les soirs à 2h00

Nous voulons exécuter le script avec des privilèges d'administrateur. Nous utilisons donc Sudo. Ouvrez un terminal en appuyant sur Ctrl+Alt+T et entrez:

Sudo crontab -e

Cette commande ouvre le fichier crontab de l'utilisateur root, s'il en existe un, ou crée un nouveau fichier vierge. Ajoutez la ligne suivante à la fin du fichier:

0 02 * * * /opt/bin/reboot_if_needed.sh >> /var/log/reboot_history.log

Si vous utilisez nano comme éditeur de fichier texte, quittez l’éditeur en appuyant sur Ctrl+X. L'éditeur vous invitera à enregistrer les modifications. presse Y puis appuyez sur Enter pour sélectionner le nom de fichier par défaut.

Explication

La ligne ajoutée à la variable crontab fera exécuter le script reboot_if_needed.sh toutes les nuits à 2 heures du matin. Le >> redirige la sortie vers le fichier /var/log/reboot_history.log. Ce fichier sera créé la première fois que crontab exécute le script.

Voir https://help.ubuntu.com/community/CronHowto pour savoir comment utiliser crontab.

Pourquoi ça marche?

Unattended-Upgrade planifie apparemment le redémarrage avec un délai. Par exemple:

Sudo shutdown -r 02:00

La commande ci-dessus planifie le redémarrage à 2 heures du matin. Quand une telle commande est en vigueur, vous obtenez le message "un autre arrêt déjà en attente".

Nous utilisons crontab pour prendre en charge le démarrage du processus de redémarrage à 2 heures du matin, au lieu de le planifier depuis la commande shutdown. Ainsi, il n'y a pas d'arrêt en attente une fois l'exécution de la mise à niveau sans assistance. Tout utilisateur peut redémarrer l'ordinateur.

Lorsqu'un utilisateur redémarre l'ordinateur, le fichier /var/run/reboot-required s'il est sorti est supprimé par le système, car le redémarrage n'est plus nécessaire. L'ordinateur ne sera pas redémarré à 2 heures du matin par le script.

J'espère que cela t'aides

1
user68186