如何查看 Linux 中用户的空闲时间?
How can I check a user's idle time in Linux?
我在云(Digital Oceans)上有一个虚拟机集群,我想找到一种方法在它们空闲至少 1 小时后将其关闭。
我想这类似于屏幕保护程序决定在指定的空闲时间后启动的方式,或者一些云服务(如 Snowflake 或 Databricks)如何在一段时间不使用时关闭资源。
我检查了 w
命令,但没有找到任何可以告诉我空闲时间的信息,尽管该命令的输出有一个空闲列。
如果您知道屏幕保护程序如何启动,或者云服务如何关闭资源,请分享。非常感谢。
===更新===
运行w | awk '{if (NR!=1) {print , }}'
之后,我的输出是这样的
kha 10days
kha -
w
测量的空闲时间仅表示自从在终端上键入某项进程所连接的内容后经过了多长时间。如所见here 这对于实际衡量用户 activity 是不准确的,因为他们可能只使用图形输入而不是输入任何内容。
如果您的用户登录到 X11 会话,则 X 客户端库有自己的空闲计时器,可以查询;参见例如User idle time being reset to 0 after 30 secs on Linux
云监控系统似乎会检查 CPU 负载和网络流量,以决定何时将实例声明为空闲。他们可能有一个可以忽略的系统进程基线,然后在检测到非系统进程时简单地添加一个勾号。
对于您的用例,也许一个简单的网络监控工具最容易设置。如果您的用户始终通过 SSH 登录,请检查端口 22 上的流量;如果 none 超过几分钟,则实例处于空闲状态。对于 X11 会话,可以为 X 协议流量设置类似的东西(端口通常在 6000 以上的范围内)。
我在云(Digital Oceans)上有一个虚拟机集群,我想找到一种方法在它们空闲至少 1 小时后将其关闭。
我想这类似于屏幕保护程序决定在指定的空闲时间后启动的方式,或者一些云服务(如 Snowflake 或 Databricks)如何在一段时间不使用时关闭资源。
我检查了 w
命令,但没有找到任何可以告诉我空闲时间的信息,尽管该命令的输出有一个空闲列。
如果您知道屏幕保护程序如何启动,或者云服务如何关闭资源,请分享。非常感谢。
===更新===
运行w | awk '{if (NR!=1) {print , }}'
之后,我的输出是这样的
kha 10days
kha -
w
测量的空闲时间仅表示自从在终端上键入某项进程所连接的内容后经过了多长时间。如所见here 这对于实际衡量用户 activity 是不准确的,因为他们可能只使用图形输入而不是输入任何内容。
如果您的用户登录到 X11 会话,则 X 客户端库有自己的空闲计时器,可以查询;参见例如User idle time being reset to 0 after 30 secs on Linux
云监控系统似乎会检查 CPU 负载和网络流量,以决定何时将实例声明为空闲。他们可能有一个可以忽略的系统进程基线,然后在检测到非系统进程时简单地添加一个勾号。
对于您的用例,也许一个简单的网络监控工具最容易设置。如果您的用户始终通过 SSH 登录,请检查端口 22 上的流量;如果 none 超过几分钟,则实例处于空闲状态。对于 X11 会话,可以为 X 协议流量设置类似的东西(端口通常在 6000 以上的范围内)。