wie kann ich überprüfen, wie viele Minuten vergangen sind, seit der Benutzer inaktiv war?

wie kann ich überprüfen, wie viele Minuten vergangen sind, seit der Benutzer inaktiv war?

Ich möchte ein Skript schreiben, das anzeigt, wie viele Minuten der Benutzer inaktiv war. Seit der letzten Berührung von Tastatur und Maus. Beispiel:

#!/bin/bash
while true
do
 command_lines...
 ...
 sleep 60
 echo $var
done

Ergebnis:

Der Computer/Benutzer ist 1 Minute lang im Leerlauf.

Der Computer/Benutzer ist 2 Minuten lang im Leerlauf.

...

Der Computer/Benutzer ist 5 Minuten lang im Leerlauf.

...

Können wir das machen? Es kann in Bash, Python usw. sein.

Antwort1

Der Befehl „w“ aus der Manpage sollte helfen:

w - Zeigt an, wer angemeldet ist und was die Person tut.

# w | awk '{if (NR!=1) {print $1,$5 }}'
USER IDLE
root 0.00s

Antwort2

Tastatur und Maus sind auf einem Mehrbenutzersystem kein klares Konzept, da auf dem Rechner mehrere X-Server laufen können, von denen einige an eine oder mehrere physische Tastaturen oder Mäuse angeschlossen sind und andere nicht. Oder es können Remote-X-Server sein, mit denen sich auf dem Rechner laufende Terminals verbinden, oder Bash-Shells, die über SSH laufen, und es gibt noch viele weitere Möglichkeiten für „Bash“, Eingaben von einem Benutzer entgegenzunehmen …

„xprintidle“ gibt Ihnen die Leerlaufzeit des X-Servers an, mit dem Sie verbunden sind (der X-Server kann lokal oder remote sein, auch lokal, er muss nicht unbedingt der aktuell aktive auf dem System sein).

Die Änderungszeit von $TTY gibt Aufschluss über die Leerlaufzeit des Terminals. stat -c %Y "$TTY" ist die letzte Änderungszeit in Sekunden, die Sie von "$(date +%s)" abziehen können (wenn Sie auf einem GNU-System sind).

verwandte Informationen