Linux中的用户空闲时间

时间:2013-02-25 14:08:57

标签: python linux bash

我需要检查自Linux上最后一次用户输入事件(在python中采用的方式)后经过了多长时间(清晰 - 10.4)

我知道这很容易以正常的方式(仅使用XScreenSaverQueryInfo),但棘手的部分是我没有x11 / extensions / scrnsaver.h标头,我必须以其他方式做到这一点(即使我安装所需的软件包我不能在其他100台计算机上安装打包机 - 我无权这样做。)

4 个答案:

答案 0 :(得分:1)

在互联网上我找到了这样的东西,它看起来像是工作 - 但仍然不是完美的解决方案,因为它返回的信息比我需要的多得多,而且附近的数字是合适的值不是恒定的(它在其他方面不同系统):

ls -l /dev/pts | fgrep username

答案 1 :(得分:1)

另一个基于 X 屏幕保护程序的替代方案是 xssstate from suckless-tools

xssstate -i

答案 2 :(得分:0)

使用xprintidle

要求: sudo apt-get install xprintidle

从命令行使用: xprintidle

,或以秒为单位: echo $((`xprintidle` / 1000))

或从python:

milliseconds_string = os.popen("xprintidle").read()
seconds = int(milliseconds_string)/1000

答案 3 :(得分:0)

另一种解决方案是使用unix命令w,它给出了所有用户的空闲时间(w命令似乎并未重置空闲时间)除外

w命令还具有一些标志-s和-f来显示短格式,并且不打印主机名,从而使您少了一些信息来查找空闲时间。我能够将其归结为

> w -sf | grep user
jxw1234  pts/5      6.00s w -sf

这也使空闲时间减少到几秒钟,因此比ls -l /dev/pts更精确。

从这一点开始,使用python的系统界面运行命令并应用正则表达式以各种格式提取时间应该非常简单。

编辑: 使用这个w command get idle time,我可以将其简化为以下结果。

>w | awk '{if (NR!=1) {print $1,$5 }}' | grep username
jxw1234 1.00s