Comment savoir quand un ordinateur est inactif?

8

J'ai un ordinateur qui n'est utilisé qu'une partie du temps, et je me demandais s'il y avait un moyen de le faire s'éteindre après une période d'inactivité.

Voici la partie délicate, si je pensais simplement à le désactiver lui-même lorsque l'interface graphique est inactive, je pense que ce serait beaucoup plus facile, mais j'essaie de m'assurer de ne couper personne qui utilise activement le machine via SSH ainsi. L'ordinateur en question est Debian 5.0.

Existe-t-il un moyen de détecter si la machine est inactive, comme dans personne utilisant l'interface graphique et personne n'utilise la machine via SSH? Si une connexion SSH est ouverte, mais qu'elle n'est pas activement utilisée, l'ordinateur doit alors considérer cette inactivité.

Jeff Welling
la source
Devrait-il être déplacé vers stackoverflow?
Jeff Welling
la question n'est pas particulièrement de programmation, et il pourrait y avoir des réponses appropriées qui ne le sont pas non plus.
jmtd
Un ami a suggéré DBUS, mais dans mes brèves 5 minutes de recherche sur Google, il ne semblait pas qu'il ferait attention aux connexions ssh, inactives ou non. Je serais bien si je n'étais pas informé cependant ... besoin de continuer à chercher quand je me réveille.
Jeff Welling
1
Pourquoi voudriez-vous quand même arrêter un ordinateur Linux? :-)
amphetamachine
@amphetamachine Économie d'énergie. Réduction de la production thermique dans une grande salle de cluster. Nous avons deux clusters Linux où je travaille; une 69 machines, une autre 43: l'activation de la gestion de l'énergie a fait une différence mesurable dans la chaleur des pièces (qui étaient trop chaudes) et la facture d'électricité.
jmtd

Réponses:

2
who -q

Montrera qui et combien d'utilisateurs ont un tty ouvert (c'est-à-dire sur la console, via X, ssh, telent) mais ne montrera pas les utilisateurs se connectant via pop, http, etc.

symcbean
la source
Existe-t-il un moyen de dire quelle était la dernière commande exécutée (PID, pour vérifier si elle est toujours en cours d'exécution) et quand elle a été exécutée? Pensez-vous que cela pourrait être accompli avec quelques modifications de l'invite bash?
Jeff Welling
Vous devez être beaucoup plus précis sur ce que vous voulez dire. Que se passe-t-il s'ils démarrent un programme setSid avant de se déconnecter - considérez-vous que leur session est toujours active? Que ne pouvez-vous pas tirer de l'histoire de bash?
symcbean
1

gdm/ gnome-power-managerpeut le détecter et suspendre la machine de manière appropriée. pour GNOME2 Essayez

gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s --type=int /apps/gnome-power-manager/timeout/sleep_computer_ac 600

et

gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s --type=int /apps/gnome-power-manager/timeout/sleep_computer_ac 600

en tant que root. Vous devrez peut-être redémarrer gdmpour que les paramètres prennent effet. (le nombre est en secondes, donc 600 est de 10 minutes).

sous GNOME3, il existe une paire de gsettingsclés similaire (ce qui précède échoue silencieusement).

Si vous n'exécutez pas GNOME, vous pouvez inspecter la source de gnome-power-managerpour comprendre comment il établit l'inactivité.

jmtd
la source
1
gdm / gnome-power-managerpeut détecter les connexions ssh inactives?
Jeff Welling
les oisifs? Non. Actifs? Je le crois. Votre question suggérait que vous ne vouliez pas couper les personnes utilisant la machine via ssh activement . Si vous ne voulez pas qu'ils soient suspendus même avec des connexions SSH inactives, veuillez réviser votre question.
jmtd
En fait, cela ressemble exactement à ce que je veux! Je vérifierai cela, merci! Une fois que j'ai vérifié que cela fonctionnera pour moi, je choisirai votre réponse :)
Jeff Welling
1

Essayez la commande xprintidle pour obtenir le temps d'inactivité en millisecondes.

Coc
la source