Como um script pode detectar o tempo ocioso de um usuário?

30

Eu quero verificar, dentro de um script bash, quanto tempo o usuário de uma sessão X está ocioso.

O próprio usuário não precisa estar usando bash, mas apenas X. Se o usuário acabou de mover o mouse, por exemplo, uma boa resposta seria "inativo por 0 segundos". Se ele não tocou no computador em 5 minutos, uma boa resposta seria "inativo por 300 segundos"

O motivo para não usar o xautolock imediatamente é conseguir implementar algum comportamento complexo. Por exemplo, se o usuário ficar ocioso por 10 minutos, tente suspender, se ele ficar ocioso por mais 5 minutos, desligar (sei que parece estranho, mas suspender nem sempre funciona aqui ...)

    
por josinalvo 17.10.2012 / 18:40

2 respostas

33

Acabamos de encontrar uma maneira simples de fazer isso.

Existe um programa chamado xprintidle que faz o truque

obter o tempo ocioso (em milissegundos) é tão simples quanto

xprintidle

e para instalar

apt-get install xprintidle

Para sysadmins, ele também funciona remotamente

De uma sessão ssh :

export DISPLAY=:0 && sudo -u john xprintidle

onde john é o usuário logado na sessão X na máquina remota.

    
por josinalvo 17.10.2012 / 19:14
2

Responder de aqui :

No bash

w | tr -s " " | cut -d" " -f1,5 | tail -n+3

fornece um par nome de usuário / idletime para cada shell. Então, basicamente, você pode obter as informações ociosas através do comando w

    
por Dan 17.10.2012 / 18:44

Tags