web-dev-qa-db-fra.com

Comment puis-je éteindre automatiquement le système après une heure donnée?

Comment puis-je éteindre automatiquement le système après un certain temps personnalisable?

41
NES

Ouvrez une fenêtre de terminal et tapez:

Sudo shutdown -h +60

et remplacez simplement 60 par le nombre de minutes que vous souhaitez prendre.

Plus d'infos ici:

http://ubuntuforums.org/archive/index.php/t-473173.htmlhttp://www.linux.org/lessons/beginner/l5/lesson5a.html

49
Daniel
  • Vous pouvez utiliser gshutdown  Install gshutdown
  • Après l'installation, vous pouvez le trouver sous Applications → Accessoires → GShutdown. alt text
  • Regardez aussi ceci méthode.
8
karthick87

Parce que le sujet après avoir arrêté l'ordinateur après une certaine période d'inactivité est redirigé vers ce sujet, je vais expliquer ce problème ici.

J'ai passé beaucoup de temps à résoudre ce problème, je trouve donc utile de le partager, de simplifier le même problème pour les autres. J'ai essayé différents programmes, mais ils ne fonctionnent pas pour moi. J'ai donc trouvé l'utilisation d'un court script avec cronjob la meilleure solution.

Premièrement, je me suis référé à post Timed Shutdown - arrêt après 30 minutes

Je vais le copier ci-dessous, puis 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 la durée d'inactivité et demande à l'ordinateur de s'éteindre 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 est resté inactif pendant trop longtemps et s’il est resté inactif pendant plus de 30 minutes, il s’arrêtera. Notez que le travail cron doit être créé pour l'utilisateur root.


Ce script nécessite quelques 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é (utilisateur root)

DISPLAY=:0 est correct pour un affichage sur le bureau (exécutez la commande env pour lire DISPLAY dans votre cas)

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 http://ubuntuforums.org/showthread.php?t=1069602

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é depuis cron par ligne dans le fichier cron:

*/5 * * * * /home/OUR_USER/autoshutdown.sh 
  • toutes les 5 minutes
  • OUR_USER doit être remplacé comme précédemment par l'utilisateur auquel nous nous référons.

Si le script n'est pas exécuté par la racine, nous devrions nous rappeler d'ajouter la ligne:

ALL ALL=(ALL) NOPASSWD: /sbin/shutdown 

dans sudoers , la commande de shutdown n'aura donc pas besoin de mot de passe pour être exécutée.


J'ai essayé de telles tâches sur deux distributions similaires . Lubuntu 12.04.4 RC LXLE 32 bits ( http://www.lxle.net/ )

Dans un système, cela ne fonctionne qu'avec la racine cronjob définie dans le fichier:

/ var/spool/cron/crontabs/root


CAVEAT

Un autre problème est que xprintidle dans mon système m'a donné des valeurs parfois 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, peut-être si je règle la valeur d'inactivité maximale à 30 minutes. Je pense que le coupable est xscreensaver qui ne fonctionne pas tel que défini par les paramètres entrés.

2
Michał

Vous pouvez utiliser

ComplexShutdown https://launchpad.net/complexshutdown

ou EasyShutdown https://launchpad.net/easyshutdown

1
Emad Habib