Debian: Bash-Skript darf nur (weiter)laufen, wenn Bildschirmschoner an

P

Programmer78

Doppel-As
Hallo zusammen,

ich bräuchte mal einen Hinweis. Ziel ist es, dass das Bash-Skript nur läuft, wenn der PC gerade nicht benutzt wird. Ich dachte an die Möglichkeit das über die Mauskoordinaten oder über den Bildschirmschoner zu lösen.

Der Bildschirmschoner geht ja auch nach einer gewissen inaktiven Zeit in Betrieb. Weiß jemand, welches Signal ich da abgreifen könnte? Es sollte möglichst mit den vorinstallierten Programmen erledigt werden, so dass nichts nachinstalliert werden muss (depends entstehen).

Über Anregungen wäre ich dankbar. Danke.

Gruß

Programmer
 
Du könntest einen Listener auf /dev/input/mice setzen. Sobald dort für eine gewisse Zeit kein neuer Output kommt, steht die Maus still. Sonst wird dir vermutlich nur xdotool weiterhelfen, was aber ja eine zusätzliche Abhängigkeit wäre.
 
Soll das allgemeingültig sein oder reicht es, wenn es nur auf Deinem PC läuft?

... in letzterem Fall - ggf. könntest Du eben den Bildschirmschoner missbrauchen, in dem Du schaust, ob der entsprechende Prozess läuft oder eben den Starter für das Programm "als Bildschirmschoner" eirnträgst.
 
Danke für die schnellen Antworten. Ja so habe ich mir das gedacht, ich wusste nur nicht, wie ich da vorgehen muss. Das sind beides gute Ideen.

Das Script sollte allgemeingültig sein, das macht die Sache so frickelig.

Für /dev/input/mice brauch ich leider root-Rechte oder ne root-Gruppenzugehörigkeit.

Mit dem Bildschirmschoner das wäre auch eine gute Methode. Kein root erforderlich aber der Schoner muss aktiviert sein.

Vielleicht mache ich doch ein Installationsskript, wo dann die Berechtigungen entsprechend geändert werden oder der Schoner aktiviert wird. Mit mice werden nur Mausdaten abgefragt, gibt es noch Signale von der Tastatur oder beide gekoppelt? Ich würde die gekoppelten favorisieren, da beides ja Eingabegeräte sind. Man kann auch 10 min einen Text schreiben wo die Maus still steht.

Danke erstmal! :)


[Edit: Tastatursignale kommen auf event2. Weiss aber nicht ob es auf anderem USB-Port gleich ist. Teste ich morgen.]
 
Zuletzt bearbeitet:
Anders herum gefragt: warum soll denn das Script nur laufen, wenn sonst niemand am PC arbeitet? Bzw. was macht das Script denn? Vielleicht passt denn ja auch eine trivial-Lösung über nice...
 
Signale von der Tastatur bekommst du über /dev/input/event0. Allgemein kannst du durch Überwachung der Devices unter /dev/input/ mitbekommen, ob irgendwelche Eingaben erfolgen (z.B. auch über Bluetooth-Geräte etc.), da dafür prinzipiell ein Event-Handler benötigt wird.

Ggf. solltest du aber einfach von Bash weggehen und z.B. Python oder sonst eine Sprache nutzen, mit der man direkt Funktionen der XLib nutzen kann. Ein Beispiel in Python wurde z.B. in http://stackoverflow.com/questions/...x-determine-if-i-am-using-my-computer-or-idle besprochen. Der Weg über die XLib wäre auf jeden Fall die sauberste Lösung. Alles andere wäre Workaround.
 
Mit Bash arbeite ich, weil es so schön einfach ist. :D Mit Python habe ich mich noch gar nicht auseinander gesetzt. Vielleicht kann man dort ja nur den Teil abfragen und das dann an Bash übermitteln. Ich werde mich mal bezüglich xlib schlau machen. Vielleicht führt tatsächlich kein weg an Python vorbei.

Marce meintest du jetzt nice oder mice. Falls du nice meinst, das sagt mir jetzt noch nichts. Hast du zwei Zeilen mehr? Muss euch jetzt leider auf morgen vertrösten, bis dann. Danke
 
nice ist ein Tool mit dem man die verwendeten Ressourcen eines Prozesses einschränken kann. So kann man dafür sorgen, dass Prozesse im Hintergrund weniger Rechenzeit zugeteilt bekommen, wodurch sie das normale Arbeiten am Rechner nicht negativ beeinflussen. Wenn das Skript also nur dann laufen soll, wenn niemand am Rechner arbeitet, weil es zu viel Ressourcen frisst und die Arbeit ausbremst, dann wäre nice eine durchaus gangbare Lösung.
 
Ich habe mich dazu entschlossen den Bildschirmschoner abzufragen. Das geht bei mir mit xscreensaver-command -time. Das erfordert keine Systemänderungen denn ich habe gesehen, dass Python xlib auch nicht standard ist. Die Lösung mit /dev/input erfordert geänderte Berechtigungen und von daher ist das mit dem Bildschirmschoner erstmal für mich die beste Lösung.

Da der Bildschirmschoner immer in der Prozessliste ist, habe ich mir die Manuale durchgelesen und bin dann auf obigen Befehl gekommen. Das funktioniert nicht für alle Linux-Destributionen aber das reicht mir erstmal.

Interessant, das mit nice, das könnte ich vielleicht später mal gebrauchen. Bei mir ist es jedoch im Moment nicht das Ressourcen-Problem. Trotzdem Danke für die Ausführungen.

Danke für Eure Hilfe! Problem gelöst. :)
 

Ähnliche Themen

Rechner über Mail steuern

Server-Monitoring mit RRDTool

Zurück
Oben