我想了解linux系统上用户在特定时间内的“使用时间”。这意味着时间,用户有一个解锁的屏幕。与此形成对比的是,命令ac始终显示用户登录的时间,包括锁定屏幕或备用的时间。
据我所知,who命令显示的空闲时间与解锁屏幕的时间不同。所以这显然不是解决办法。
开源程序Timekpr显示想要的信息,但只显示当前一周的信息。可能有可能提取用于该计算的代码。然而,我的编程技巧太糟糕了。
发布于 2023-03-28 10:33:03
据我所知,who命令显示的空闲时间与解锁屏幕的时间不同。
不是的。who是一个早于图形化会话的程序。它根本不知道什么是“锁定屏幕”。
一般来说,一个屏幕储物柜只是一个普通的程序,碰巧在全屏幕上运行,捕捉你所有的按键。因此,从您的计算机的角度来看,用户永远不会登出--只是在显示锁定屏幕的时候没有做太多的事情。
最近几年,幸运的是,大多数Linux发行版在某种程度上达成了用户会话和座位管理的一致意见--因此存在loginctl lock-session (您的会话管理器可以在内部或通过dbus进行锁定)。
您可以编写一个程序,通过dbus将锁/解锁机制挂起来,并注意其间的时间--据我所知,目前还没有这样做:loginctl session-status有一个会话时间的概念,但不知道分配给一个座位和解锁的时间有多长。
通常,您要查找的信息似乎非常可疑--为了记帐的目的,用户可能会在屏幕锁定时执行任意的计算/网络/存储操作。
发布于 2023-03-28 10:44:08
这并不完全是您想要的,但您可能会发现( GNU会计公用设施(会计科目)很有用。
GNU会计实用程序是一组实用程序,它报告和总结有关用户连接时间和进程执行统计信息的数据。“登录记帐”提供基于连接时间的系统资源使用情况摘要,“进程记帐”提供基于在系统上执行的命令的汇总。
它应该可用于大多数发行版,例如Debian等,apt-get install acct。
注意:跟踪用户及其进程和执行时间等可能会对负载较轻的高端系统上的performance....probably产生影响,但在负载较重或低端系统上可能会相当明显。
https://unix.stackexchange.com/questions/741179
复制相似问题