2

Linux システムでユーザーが非アクティブであることを検出して、電源をオフにする必要があります (非常に頭のない妻と、非常に高価な電気代... :-)。

スクリプトを (crontab で) スケジュールする必要があるため、X 依存のツールは機能しないと思います ($DISPLAY は利用できません)。

何かご意見は?

アップデート

「ユーザーの非アクティブ」とは、ユーザー入力の非アクティブ (マウスとキーボード) を意味します。

4

2 に答える 2

2

Xautolockはあなたにぴったりのツールかもしれません。コマンドがトリガーされるまでの非アクティブ時間を分単位で指定できます。

于 2012-11-25T14:08:23.340 に答える
1

スクリーン セーバーが実行されている時間を確認することを検討してください。

#!/bin/bash

screensaver="atlantis"

t=$(
    # check for the screensaver
    ps h -o start -C $screensaver          |\
    # hh:mm:ss -> seconds
    awk -F: '{print $1"*3600+"$2"*60+"$3}' |\
    bc -l  2>/dev/null  | sort -n | tail -1
)

if [ "$t" == "" ]
then
    exit 0
fi

n=$(
    date "+%T"                             |\
    awk -F: '{print $1"*3600+"$2"*60+"$3}' |\
    bc -l  2>/dev/null
)

runtime=$(( $n - $t ))

if [ $runtime -gt 3600 ] || [ $runtime -lt 0 ]
then
    echo shutdown -h now 
fi

時間値を使用するには、実行時間を取得するために、then から now を減算する必要があります。また、私の場合、プロセス テーブルに表示されるスクリーンセーバー プログラムは、選択したスクリーンセーバーによって異なります。したがって、上記のプログラムは、'atlantis' が現在のスクリーン セーバーであると想定しています。

于 2012-11-25T15:33:59.523 に答える