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).