我需要检查自 Linux 上的最后一次用户输入出现(首选方式 - 在 python 中)以来经过了多长时间(清醒 - 10.4)
我知道这在正常情况下很容易(仅使用 XScreenSaverQueryInfo),但棘手的部分是我没有 x11/extensions/scrnsaver.h 标头,我必须以其他方式执行此操作(即使我安装了所需的包我无法在其他 100 台可以运行它的计算机上安装 packeges - 我没有这样做的权限)。
另一种基于 X 屏幕保护程序的替代方法是来自 sinkless-tools 的 xssstate:
xssstate -i
在互联网部门,我发现了类似的东西,它看起来像工作 - 但仍然不是完美的解决方案,因为它返回的信息比我需要的多得多,而且正确值附近的数字不是恒定的(它在其他系统中有所不同):
ls -l /dev/pts | fgrep username
使用 xprintidle
要求:
sudo apt-get install xprintidle
从命令行使用:
xprintidle
或者,以秒为单位:
echo $((`xprintidle` / 1000))
或从蟒蛇:
milliseconds_string = os.popen("xprintidle").read()
seconds = int(milliseconds_string)/1000
另一种解决方案是使用 unix 命令w
,这给出了所有用户的空闲时间(除了似乎不会重置空闲时间的 w 命令)
该w
命令还有一些标志 -s 和 -f 来显示短格式并且不打印主机名,从而为您提供略少的信息来查找空闲时间。我能够把它归结为
> w -sf | grep user
jxw1234 pts/5 6.00s w -sf
这也将空闲时间缩短到秒,因此比ls -l /dev/pts
.
从这一点来看,使用 python 的系统界面运行命令并应用正则表达式以各种格式提取时间应该非常简单。
编辑:使用这个w 命令获取空闲时间,我能够得到以下结果。
>w | awk '{if (NR!=1) {print $1,$5 }}' | grep username
jxw1234 1.00s