Como reconhecer um estado de ociosidade de um determinado período em um script?

3

Eu gostaria de escrever um script simples que funcione como um daemon. A única coisa que esse daemon tem que fazer é verificar se por um determinado período nem uma tecla foi atingida, nem um mouse foi movido, nem um touchpad tocado, e se for assim, deve desligar o pc.

Eu percebo que é um programa bastante simples, porque consiste em apenas uma condição e uma ação, mas não tenho a menor idéia de como verificar essa condição de ociosidade.

    
por Abdul Al Hazred 11.03.2015 / 20:00

1 resposta

0

Você poderia fazer algo assim (não testado e funcionaria apenas no Linux):

#!/bin/zsh
TIMEOUT=6000 # hundredths of seconds; in this case, 10 minutes
zmodload zsh/system
zmodload zsh/zselect
for i in /dev/input/*; do
    [[ -c "$i" ]] && sysopen -r -o cloexec -u fd "$i"
    dev=($dev[@] $fd)
done
while zselect -t $TIMEOUT $dev; do
    sleep 5
done
# timeout occurred
shutdown -h now

Mas isso é tecnicamente ainda um script de shell. :)

Ele também não funcionará corretamente se dispositivos de entrada adicionais forem conectados depois de iniciados (ele ignorará a entrada deles).

    
por 22.01.2016 / 23:40