Comment puis-je arrêter automatiquement le système après un certain temps personnalisable?
Étant donné que le sujet concernant l’arrêt du PC après une certaine période d’inactivité est redirigé sur ce sujet, je vous expliquerai ce problème ici.
J'ai passé beaucoup de temps à résoudre ce problème, alors je trouve utile de le partager, de simplifier le même problème pour les autres. J'ai essayé différents programmes mais ils n'ont pas fonctionné pour moi. J'ai donc trouvé un script court avec cronjob la meilleure solution.
Tout d'abord, je me suis référé à la publication Timed Shutdown - arrêt après 30 minutes
Je vais le copier ci-dessous et ensuite expliquer les améliorations pour que cela fonctionne:
Installez xprintidle. Cet outil donne le temps d'inactivité d'un utilisateur.
sudo apt-get install xprintidle
Créez un script autoshutdown.sh qui vérifie le temps d'inactivité et indique à l'ordinateur de s'arrêter s'il est inactif pendant 30 minutes.
idle=$(xprintidle) if [ $idle -gt 1800000 ]; then shutdown -h now fi
Faites un cronjob pour cela qui vérifie de temps en temps si le système a été inactif pendant trop longtemps et s’il est resté inactif plus longtemps que 30 minutes, il va s'arrêter. Notez que le cronjob doit être fait pour l'utilisateur root.
Ce script a besoin d’améliorations pour fonctionner, comme par exemple:
idle='env DISPLAY=:0 su OUR_USER -c xprintidle 2>&1'
OUR_USER
est l'utilisateur auquel nous nous référons pour vérifier le temps d'inactivité (pas l'utilisateur root)
DISPLAY=:0
est correct pour un affichage sur le bureau (exécutez la commande env
pour lire DISPLAY
dans votre situation)
si le script est exécuté par OUR_USER
, la ligne ci-dessus peut être réduite:
idle='env DISPLAY=:0 xprintidle 2>&1'
Ce sujet est décrit lien
si le script est exécuté par OUR_USER
, la commande shutdown
doit être précédée de sudo
sudo shutdown -h now
Mon script a été exécuté à partir de cron par ligne dans le fichier cron:
*/5 * * * * /home/OUR_USER/autoshutdown.sh
Si le script n'est pas exécuté par root, n'oubliez pas d'ajouter la ligne:
ALL ALL=(ALL) NOPASSWD: /sbin/shutdown
dans le fichier sudoers , la commande shutdown n’a donc pas besoin d’un mot de passe pour être exécutée.
J'ai essayé ces cronjobs sur 2 distributions similaires Lubuntu 12.04.4 RC LXLE 32 bits ( lien )
Dans un système, il ne fonctionne qu'avec le cronjob racine défini dans le fichier:
/ var / spool / cron / crontabs / root
Un autre problème est que xprintidle dans mon système a parfois donné des valeurs aléatoires et parfois logiquement incrémentielles. Le résultat final - mon système a généralement été arrêté après 20 minutes, si je mets la valeur maximale d'inactivité à 30 minutes. Je pense que le coupable est xscreensaver , qui ne fonctionne pas comme défini par les paramètres entrés.
Lire d'autres questions sur les étiquettes automation shutdown