Comment puis-je arrêter automatiquement le système après une certaine période de temps personnalisable ?
Réponses
Trop de publicités?Ouvrez une fenêtre de terminal et tapez
sudo shutdown -h +60
et remplacez 60 par le nombre de minutes que vous souhaitez.
Plus d'informations ici :
http://ubuntuforums.org/archive/index.php/t-473173.html http://www.linux.org/lessons/beginner/l5/lesson5a.html
Parce que le sujet concernant l'arrêt du PC après une certaine période d'inactivité est réorienté à ce sujet, j'expliquerai cette question ici.
J'ai passé beaucoup de temps à résoudre ce problème, et je trouve donc utile de le partager, afin de rendre le même problème plus simple pour les autres. J'ai essayé différents programmes mais ils n'ont pas fonctionné pour moi. short script avec cronjob la meilleure solution.
Tout d'abord, je me réfère au post Arrêt programmé - arrêt après 30 minutes
Je vais le copier ci-dessous et expliquer ensuite les améliorations à apporter pour qu'il fonctionne :
Installer 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 demande à l'ordinateur de s'éteindre s'il est inactif pendant 30 minutes. 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
Créez un cronjob qui vérifie de temps en temps si le système est resté inactif trop longtemps et si le système est en train de s'éteindre. est resté inactif trop longtemps et s'il est resté inactif pendant plus de 30 minutes, il s'arrêtera. Notez que le cronjob doit être créé pour l'utilisateur root.
Ce script a besoin de 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 on se réfère pour vérifier le temps d'inactivité (pas l'utilisateur root)
DISPLAY=:0
est correct pour un écran de bureau (exécuter env
pour lire DISPLAY
dans votre situation)
si script est exécuté par OUR_USER
La ligne ci-dessus peut être réduite :
idle=`env DISPLAY=:0 xprintidle 2>&1`
Ce thème est décrit http://ubuntuforums.org/showthread.php?t=1069602
si script est exécuté par OUR_USER
, shutdown
doit être précédée de la mention 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
- toutes les 5 minutes
- OUR_USER doit être remplacé comme précédemment par l'utilisateur auquel nous nous référons.
Si script n'est pas exécuté par root, il ne faut pas oublier d'ajouter la ligne :
ALL ALL=(ALL) NOPASSWD: /sbin/shutdown
en sudoers donc arrêt n'aura pas besoin de mot de passe pour être exécutée.
J'ai essayé de tels cronjobs sur 2 distro similaires Lubuntu 12.04.4 RC LXLE 32 bits ( http://www.lxle.net/ )
Dans un système, il ne fonctionne qu'en utilisant le cronjob de la racine défini dans le fichier :
/var/spool/cron/crontabs/root
CAVEAT
Un autre problème est que xprintidle dans mon système a donné des valeurs parfois aléatoires pour moi et parfois logiquement incrémentielle. Le résultat final est que mon système s'éteint généralement au bout de 20 minutes environ, si je fixe la valeur maximale d'inactivité à 30 minutes. Je pense que le coupable est xscreensaver qui ne fonctionne pas comme prévu par les paramètres saisis.
Vous pouvez utiliser
ComplexShutdown https://launchpad.net/complexshutdown
ou EasyShutdown https://launchpad.net/easyshutdown
Vous pouvez utiliser sleep
pour cela. Ils sont utilisés pour retarder ou interrompre une opération. Combinez cela avec shutdown
vous obtenez une minuterie de mise hors tension. Exemple de mise en veille après 1 heure :
sleep 3600 && sudo shutdown now
Vous pouvez également utiliser les mathématiques, par exemple pour éteindre l'appareil au bout de 3 heures :
sleep $((3600*3)) && sudo shutdown now