我想编写一个应该作为守护进程工作的简单脚本。该守护进程唯一要做的事情是检查在给定的时间内是否没有按下按键、移动鼠标或触摸触摸板,如果是这样,它应该关闭电脑。
我意识到这是一个非常简单的程序,因为它只包含一个条件和一个操作,但我不知道如何检查这种空闲条件。
答案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 脚本。 :)
如果在启动后插入其他输入设备,它也将无法正常工作(它将忽略这些输入设备)。