【问题标题】:How can I check a user's idle time in Linux?如何在 Linux 中查看用户的空闲时间?
【发布时间】:2021-08-12 06:18:40
【问题描述】:

我在云 (Digital Oceans) 上有一个虚拟机集群,如果它们空闲至少 1 小时,我想找到一种方法来关闭它们。

我想这类似于屏幕保护程序在指定的空闲时间后决定启动,或者像 Snowflake 或 Databricks 等一些云服务如何在一段时间内不使用资源时关闭资源。

我检查了w 命令并没有找到任何可以告诉我空闲时间的信息,尽管该命令的输出有一个空闲列。

如果您知道屏幕保护程序如何启动,或者云服务如何关闭资源,请分享。非常感谢。

=== 更新 ===

运行w | awk '{if (NR!=1) {print $1,$5 }}'后,我的输出是这样的

kha 10days
kha -

【问题讨论】:

标签: linux amazon-ec2 cloud digital-ocean screensaver


【解决方案1】:

w 测量的空闲时间只是表明在终端上输入某个进程后多久了。如所见,例如here 这对于实际测量用户活动是不准确的,因为他们可能只使用图形输入而不输入任何内容。

如果您的用户登录到 X11 会话,X 客户端库有自己的空闲计时器,可以查询;参见例如User idle time being reset to 0 after 30 secs on Linux

云监控系统似乎会检查 CPU 负载和网络流量等内容,以决定何时将实例声明为空闲。他们可能有一个可以忽略的系统进程基线,然后只要检测到非系统进程就简单地添加一个勾号。

对于您的用例,也许一个简单的网络监控工具是最容易设置的。如果您的用户总是通过 SSH 登录,请检查端口 22 上的流量;如果几分钟内没有,则实例处于空闲状态。对于 X11 会话,可以为 X 协议流量设置类似的设置(端口通常在 6000 以上的范围内)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2011-09-23
    • 2010-10-11
    • 2011-06-10
    • 2014-12-19
    相关资源
    最近更新 更多