スクリプト内の特定の期間内にアイドル状態を識別する方法は?

スクリプト内の特定の期間内にアイドル状態を識別する方法は?

デーモンとして機能する簡単なスクリプトを書きたいです。このデーモンがしなければならない唯一のことは、与えられた時間内にキーを押さなかったのか、マウスを動かしたのか、タッチパッドをタッチしたのかを確認するだけです。そのような場合は、コンピュータをシャットダウンする必要があります。

このプログラムには1つの条件と1つのタスクしか含まれていないため、非常に単純なプログラムであることを知っていますが、このアイドル状態を確認する方法がわかりません。

ベストアンサー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

しかし、これはまだ技術的にシェルスクリプトです。 :)

また、起動後に他の入力デバイスを接続すると正しく機能しません(無視されます)。

おすすめ記事