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 以获得运行时间。此外,在我的情况下,出现在进程表中的屏幕保护程序将根据选择的屏幕保护程序而有所不同。因此,上面的程序假定“亚特兰蒂斯”是当前的屏幕保护程序。

于 2012-11-25T15:33:59.523 回答