como verificar quantos minutos se passaram desde que o usuário ficou ocioso?

como verificar quantos minutos se passaram desde que o usuário ficou ocioso?

Quero escrever um script que mostre quantos minutos o usuário fica ocioso. Desde o último toque do teclado e mouse. Exemplo:

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

Resultado:

O computador/usuário fica ocioso por 1 minuto.

O computador/usuário fica ocioso por 2 minutos.

...

O computador/usuário fica ocioso por 5 minutos.

...

Podemos fazer isso? Pode ser em Bash, Python, etc.

Responder1

O comando "w" deve ajudar, na página de manual:

w - Mostra quem está logado e o que está fazendo.

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

Responder2

Teclado e mouse não são um conceito claro em um sistema multiusuário, onde pode haver vários servidores X em execução na máquina, alguns conectados a um ou mais teclados ou mouses físicos, outros não, ou servidores X remotos onde os terminais em execução na máquina se conectam para, ou bash shells rodando sobre ssh e muitas outras maneiras de "bash" receber informações de um usuário ...

O "xprintidle" fornecerá o tempo ocioso do servidor X ao qual você está conectado (esse servidor X pode ser local ou remoto, até mesmo local, pode não ser necessariamente o servidor atualmente ativo no sistema)

O tempo de modificação de $TTY informará o tempo ocioso do terminal. stat -c %Y "$TTY" é o tempo da última modificação em segundos, que você pode subtrair de "$(date +%s)" (se estiver em um sistema GNU).

informação relacionada