我如何计算使用 linux bash 命令按用户分组的用户会话数?

How can i count user sessions grouped by users with linux bash command?

我如何计算使用 Linux bash 命令按用户分组的用户会话数?

我有一个 运行 在 Linux OS 上的应用程序。要使用应用程序,用户启动终端并使用他们的 Linux 帐户登录,然后系统会提示他们使用应用程序登录菜单,他们在其中输入应用程序登录凭据。

我的问题是,当用户使用完该应用程序并注销后,他们的 Linux 会话仍然处于活动状态。所以我时不时地 运行 命令

killall -u [Linux username]

对于超过 3 个活动会话的用户。

我使用了命令

w | sort 

获取用户列表,但后来我找不到任何在线帮助说明如何根据 Linux 用户名对列表进行分组。

我打算根据用户名对输出列表进行分组,然后计算超过 3 行的用户名,然后 运行

killall -u [username]

我认为很多人可能会发现了解特定用户名 (userid) 有多少会话是有用的,因为这些可能会降低机器的整体性能。在我的例子中,每次建立活动会话时,托管应用程序的机器的响应时间都会恶化。

尝试:

w | sed '1,2d' | cut -f1 -d' ' | sort | uniq -c

这将 return 每个用户一行,其中包含每个用户的会话数。例如:

       1 root
      15 sa
       2 superuser
       1 user1
       3 user2

在这种情况下,用户 sa 有 15 个会话,user2 有 3 个会话。