¿Cómo comprobar cuántos minutos han pasado desde que el usuario está inactivo?

¿Cómo comprobar cuántos minutos han pasado desde que el usuario está inactivo?

Quiero escribir un script que muestre cuántos minutos está inactivo el usuario. Desde el último toque del teclado y el ratón. Ejemplo:

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

Resultado:

La computadora/usuario está inactivo durante 1 minuto.

La computadora/usuario está inactivo durante 2 minutos.

...

La computadora/usuario está inactivo durante 5 minutos.

...

¿Podemos hacer eso? Puede ser en Bash, Python, etc.

Respuesta1

El comando "w" debería ayudar, desde la página de manual:

w: muestra quién ha iniciado sesión y qué está haciendo.

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

Respuesta2

El teclado y el mouse no son un concepto claro en un sistema multiusuario, donde puede haber múltiples servidores X ejecutándose en la máquina, algunos conectados a uno o más teclados o ratones físicos, otros no, o servidores X remotos donde se conectan los terminales que se ejecutan en la máquina. a, o bash shells que se ejecutan sobre ssh y muchas más formas para que "bash" reciba información de un usuario...

El "xprintidle" le dará el tiempo de inactividad del servidor X al que está conectado (ese servidor X puede ser local o remoto, incluso local, no necesariamente puede ser el actualmente activo en el sistema)

El tiempo de modificación de $TTY le indicará el tiempo de inactividad del terminal. stat -c %Y "$TTY" es su última hora de modificación en segundos, que puede restar "$(date +%s)" (si está en un sistema GNU).

información relacionada