如何识别脚本中给定时间段内的空闲状态?

如何识别脚本中给定时间段内的空闲状态?

我想编写一个应该作为守护进程工作的简单脚本。该守护进程唯一要做的事情是检查在给定的时间内是否没有按下按键、移动鼠标​​或触摸触摸板,如果是这样,它应该关闭电脑。

我意识到这是一个非常简单的程序,因为它只包含一个条件和一个操作,但我不知道如何检查这种空闲条件。

答案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

但这只是从技术上来说仍然是一个 shell 脚本。 :)

如果在启动后插入其他输入设备,它也将无法正常工作(它将忽略这些输入设备)。

相关内容