스크립트에서 특정 기간 내에 유휴 상태를 식별하는 방법은 무엇입니까?

스크립트에서 특정 기간 내에 유휴 상태를 식별하는 방법은 무엇입니까?

데몬으로 작동하는 간단한 스크립트를 작성하고 싶습니다. 이 데몬이 해야 할 유일한 일은 주어진 시간 내에 키를 누르지 않았는지, 마우스를 움직였는지, 터치패드를 터치했는지 확인하는 것뿐입니다. 그런 경우 컴퓨터를 종료해야 합니다.

이 프로그램은 하나의 조건과 하나의 작업만 포함하므로 매우 간단한 프로그램이라는 것을 알고 있지만 이 유휴 상태를 확인하는 방법을 모르겠습니다.

답변1

다음을 수행할 수 있습니다(테스트되지 않았으며 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

그러나 이것은 여전히 ​​기술적으로 쉘 스크립트입니다. :)

또한 시작 후 다른 입력 장치를 연결하면 제대로 작동하지 않습니다(무시됩니다).

관련 정보