Хочу написать скрипт, который будет показывать, сколько минут пользователь бездействует. С момента последнего касания клавиатуры и мыши. Пример:
#!/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).