web-dev-qa-db-fra.com

Comment arrêter Ubuntu après (2 heures) d'inactivité?

En cours d'exécution: Xubuntu 14.04 32bit.

J'ai lu plusieurs documents obsolètes, ne fonctionnant pas, fonctionnant différemment pour lesquels je veux des réponses ici et ailleurs. Un script m'a amené à éteindre mon ordinateur portable au démarrage après l'avoir configuré pour un démarrage automatique.

J'ai aussi essayé d'installer complexshutdown malgré le fait que cet outil soit mort en 2011 et a un bogue sur Lauchpad qui dit que son option exacte n'est pas disponible. Ce n'est même pas installé le 14.04 ici.

Donc, si je peux poser cette question à nouveau sans être puni de "duplicate of" ...

Je suis à la recherche d'un script simple et direct qui est actuellement testé et fonctionne et que je peux mettre dans le démarrage automatique qui ne fait que vérifier l'activité (souris/clavier) et éteindre mon ordinateur portable s'il n'y en avait pas pendant 2 heures.

Merci.

6
redanimalwar

C'est probablement la meilleure solution. Pas besoin d'économiseur d'écran peaufiner et en cours d'exécution.

Installer Sudo apt-get install xprintidle

Mettez ce script en démarrage automatique:

#!/bin/bash

idletime=$((1000*60*60*2)) # 2 hours in milliseconds

while true; do
    idle=`xprintidle`
    echo $idle
    if (( $idle > $idletime )); then
        #Sudo shutdown -P now
        dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
    fi
    sleep 1
done

Les commentaires et la réponse de @Jobin m'ont amené à me questionner à nouveau et j'ai trouvé un script inachevé avec xprinttime mais sans aucune boucle dans le script. Probablement pas fini ceci parce que ma connaissance linux/bash n'était pas bonne à l'époque. J'ai également mis le script que j'avais dans rc.local ou quelque chose du genre qui a déclenché l'arrêt du système au démarrage. Merci à @Jobin de nous avoir rappelé comment ajouter des applications de démarrage dans XFCE. Je le savais déjà, mais ... et le crédit pour la chose dbus, je ne l'ai jamais vu, mieux vaut alors arrêter, car il ne nécessite pas de racine.

6
redanimalwar

Après avoir examiné plusieurs options pour la fermeture après un certain temps d'inactivité, il semble que xautolock soit le moyen le plus simple. Tous les crédits à Sparhawk pour avoir parlé de xautolock.

Merci à Sneetsher pour avoir signalé xscreensaver. À l’aide de xscreensaver, je pourrais spécifier manuellement ce qu’il faut faire après un certain temps d’inactivité. Pour utiliser xscreensaver, vous devez l'installer en utilisant:

Sudo apt-get install xscreensaver

ou installez-le à partir du centre de logiciel, puis exécutez-le une fois à l'aide de:

xscreensaver-demo

ou tapez "xscreensaver" sur le tableau de bord et ouvrez "Screensaver".

Cela créera un fichier ~/.xscreensaver. Ouvrez-le et recherchez la ligne:

programs:                                                                     \

et ajouter:

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true \n\

juste en dessous de la

programs:                                                                     \

ligne.

Vous pouvez spécifier le délai après lequel l'arrêt doit être déclenché en modifiant la ligne commençant par timout. Le modifier pour

timeout:        2:00:00

arrêter après deux heures.

Regardez mon fichier .xscreensaverici .

Cela devrait mettre votre ordinateur hors tension après deux heures d'inactivité ou à l'heure que vous spécifiez dans le script.

Remarques:

  • Jetez un oeil à cette question pour voir comment ajouter xscreensaver au démarrage.

  • J'ai essayé d'utiliser un arrêt complexe, mais le bogue ici semble m'affecter et ne peut donc pas se produire. Sinon, une application graphique aurait été disponible pour cela.

  • Ceci pourrait être réalisé en utilisant xautolock, cependant, comme redanimalwar souligné, un délai d’attente supérieur à 1 heure n’est pas possible sans modification de son code source et recompilation.

6
jobin

Ceci est mon script simplifié, cela nécessite que vous installiez le paquet "xprintidle" et que vous modifiiez la commande shutdown afin qu'il soit possible de l'exécuter sans Sudo/mot de passe.

Sudo chmod u+s /sbin/shutdown
Sudo apt-get install xprintidle

Scénario

#!/bin/bash
idletime=$((15*60*1000)) # 15 min in milliseconds
idle=0

while [ $idle -lt $idletime ];do
    idle=`xprintidle`
    sleep 1
done
shutdown -P now
2
Krypstocken

@Redanimalwar modifié script pour avertir l'utilisateur et donner une chance d'annuler l'arrêt. Pour les tests, il utilise 3 secondes et un message simple. S'il vous plaît ajuster à vos goûts. HTH.

#!/bin/bash
#https://askubuntu.com/questions/442795/
#http://ubuntuforums.org/showthread.php?t=2172828

function showProgress(){
#
# Force Zenity Status message box to always be on top.
sleep 1 && wmctrl -r "Progress Status" -b add,above &

(
echo "# Shutting Down in 5" ; sleep 2
echo "25"
echo "# Shutting Down in 4" ; sleep 2
echo "50"
echo "# Shutting Down in 3" ; sleep 2
echo "75"
echo "# Shutting Down in 2" ; sleep 2
echo "99"
echo "# Shutting Down in 1" ; sleep 2
echo "# Shutting Down now" ; sleep 2
echo "100"

) |
zenity --progress \
  --title="Progress Status" \
  --text="First Task." \
  --percentage=0 \
 --auto-close

return $?

}


#idletime=$((1000*60*60*2)) # 2 hours in milliseconds
idletime=$((1000*3)) # test, 3seconds

while true; do
    idle=`xprintidle`
    echo $idle
    if (( $idle > $idletime )); then
        showProgress && \
        #Sudo shutdown -P now
        #dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
        #echo for tests. use command above to actually shutdown
        echo shuting down the system. Just kidding  ^_^ \
        && exit 0
    fi
    sleep 1
done
1
Marco Linux