如何检查用户闲置了多少分钟?

如何检查用户闲置了多少分钟?

我想编写一个脚本来显示用户闲置了多少分钟。自上次触摸键盘和鼠标以来。示例:

#!/bin/bash
while true
do
 command_lines...
 ...
 sleep 60
 echo $var
done

结果:

计算机/用户闲置1分钟。

计算机/用户闲置2分钟。

...

计算机/用户闲置5分钟。

...

我们能做到吗?它可以用 Bash、Python 等来实现。

答案1

从手册页来看,“w”命令应该有帮助:

w——显示谁登录了以及他们正在做什么。

# w | awk '{if (NR!=1) {print $1,$5 }}'
USER IDLE
root 0.00s

答案2

在多用户系统上,键盘和鼠标不是一个明确的概念,因为机器上可能运行多个 X 服务器,一些连接到一个或多个物理键盘或鼠标,一些则没有,或者机器上运行的终端连接到的远程 X 服务器,或者通过 ssh 运行的 bash shell,以及“bash”从用户那里获取输入的许多其他方式......

“xprintidle” 将为您提供所连接的 X 服务器的空闲时间(该 X 服务器可能是本地的或远程的,即使是本地的,它也不一定是系统上当前活动的服务器)

$TTY 的修改时间将告诉您终端的空闲时间。stat -c %Y "$TTY" 是其最后修改时间(以秒为单位),您可以从“$(date +%s)”中减去它(如果在 GNU 系统上)。

相关内容