как проверить, сколько минут прошло с момента бездействия пользователя?

как проверить, сколько минут прошло с момента бездействия пользователя?

Хочу написать скрипт, который будет показывать, сколько минут пользователь бездействует. С момента последнего касания клавиатуры и мыши. Пример:

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

Результат:

Компьютер/пользователь бездействует в течение 1 минуты.

Компьютер/пользователь бездействует в течение 2 минут.

...

Компьютер/пользователь бездействует в течение 5 минут.

...

Можем ли мы это сделать? Это может быть на Bash, Python и т. д.

решение1

Команда «w» из страницы руководства должна помочь:

w - Показать, кто вошел в систему и что он делает.

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

решение2

Клавиатура и мышь — не совсем понятная концепция в многопользовательской системе, где на машине может быть запущено несколько X-серверов, некоторые из которых подключены к одной или нескольким физическим клавиатурам или мышам, а некоторые — нет, или удаленные X-серверы, к которым подключаются терминалы, работающие на машине, или оболочки bash, работающие по протоколу ssh, и множество других способов, которыми «bash» может принимать ввод от пользователя...

«xprintidle» покажет вам время простоя X-сервера, к которому вы подключены (этот X-сервер может быть локальным или удаленным, даже локальным, он не обязательно может быть активным в данный момент в системе)

Время изменения $TTY покажет вам время простоя терминала. stat -c %Y "$TTY" - это время последнего изменения в секундах, которое вы можете вычесть из "$(date +%s)" (в системе GNU).

Связанный контент