Wie kann man feststellen, wann ein Computer inaktiv ist?

8

Ich habe einen Computer, der nur teilweise verwendet wird, und ich habe mich gefragt, ob es eine Möglichkeit gibt, ihn nach einer Zeit der Inaktivität selbst auszuschalten.

Hier ist der schwierige Teil: Wenn ich nur daran gedacht habe, es selbst auszuschalten, wenn die GUI inaktiv ist, wäre es meiner Meinung nach wesentlich einfacher, aber ich versuche sicherzustellen, dass ich niemanden abschneide, der das aktiv nutzt Maschine auch über SSH. Der fragliche Computer ist Debian 5.0.

Gibt es eine Möglichkeit zu erkennen, ob die Maschine inaktiv ist, wie bei niemandem, der die GUI verwendet, und bei niemandem, der die Maschine über SSH verwendet? Wenn eine SSH-Verbindung geöffnet ist, aber nicht aktiv verwendet wird, sollte der Computer diesen Leerlauf berücksichtigen.

Jeff Welling
quelle
Sollte dies möglicherweise in den Stackoverflow verschoben werden?
Jeff Welling
Die Frage ist nicht besonders programmierfähig, und es könnte geeignete Antworten geben, die es auch nicht sind.
Jmtd
Ein Freund schlug DBUS vor, aber in meinen kurzen 5 Minuten des Googelns sah es nicht so aus, als würde es SSH-Verbindungen, ob im Leerlauf oder nicht, keine Aufmerksamkeit schenken. Ich wäre nett, wenn ich nicht informiert wäre. Ich muss weiter suchen, wenn ich aufwache.
Jeff Welling
1
Warum sollten Sie einen Linux-Computer überhaupt herunterfahren wollen? :-)
Amphetamachine
@amphetamachine Energiesparen. Reduzierung der Wärmeleistung in einem großen Clusterraum. Wir haben zwei Linux-Cluster, in denen ich arbeite. eine 69 Maschinen, eine andere 43: Die Aktivierung des Power Managements hat einen messbaren Unterschied in der Wärme der Räume (die zu heiß waren) und der Stromrechnung gemacht.
Jmtd

Antworten:

2
who -q

Zeigt an, wer und wie viele Benutzer ein offenes tty haben (dh an der Konsole über X, ssh, telent), zeigt jedoch keine Benutzer an, die eine Verbindung über pop, http usw. Verbinden

symcbean
quelle
Gibt es eine Möglichkeit zu sagen, was der letzte Befehl war, den sie ausgeführt haben (PID, um zu überprüfen, ob er noch ausgeführt wird) und wann er ausgeführt wurde? Denken Sie, dass dies mit einigen Änderungen an der Bash-Eingabeaufforderung erreicht werden könnte?
Jeff Welling
Sie müssten viel genauer sagen, was Sie meinen. Was wäre, wenn sie vor dem Abmelden ein Setsid-Programm starten würden? Würden Sie ihre Sitzung als noch aktiv betrachten? Was können Sie nicht aus der Bash-Geschichte bekommen?
Symcbean
1

gdmIch gnome-power-managerkann dies erkennen und die Maschine entsprechend aufhängen. für GNOME2 versuchen

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

und

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

als Wurzel. Möglicherweise müssen Sie neu starten, gdmdamit die Einstellungen wirksam werden. (Die Zahl ist Sekunden, also 600 sind 10 Minuten).

Unter GNOME3 gibt es ein ähnliches gsettingsSchlüsselpaar (das obige schlägt fehl).

Wenn Sie GNOME nicht ausführen, können Sie die Quelle überprüfen, gnome-power-managerum herauszufinden, wie es den Leerlauf herstellt.

jmtd
quelle
1
gdm / gnome-power-managerkann inaktive SSH-Verbindungen erkennen?
Jeff Welling
müßige? Aktive? Ich glaube schon. Ihre Frage deutete darauf hin, dass Sie nicht möchten, dass Personen, die die Maschine verwenden, über ssh aktiv abgeschnitten werden . Wenn Sie nicht möchten, dass sie auch bei inaktiven SSH-Verbindungen angehalten werden, überarbeiten Sie bitte Ihre Frage.
Jmtd
Eigentlich klingt das genau so, wie ich es will! Ich werde das überprüfen, danke! Sobald ich überprüft habe, dass es für meine Zwecke funktioniert, werde ich Ihre Antwort wählen :)
Jeff Welling