我想编写一个脚本来显示用户闲置了多少分钟。自上次触摸键盘和鼠标以来。示例:
#!/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 系统上)。