如何列出所有具有终端会话(包括屏幕会话)的用户?

如何列出所有具有终端会话(包括屏幕会话)的用户?

我想获得 Linux 系统上所有活跃用户的列表,包括正在运行但已分离的屏幕会话的用户。该who命令仅显示当前登录的用户,而不显示具有分离屏幕会话的用户等。

我正在考虑解析输出,ps但这也会让用户显示他是否正在运行 cron 作业。

答案1

尝试:

$ ps axno user,tty | awk '$1 >= 1000 && $1 < 65530 && $2 != "?"' | sort -u

这应该会告诉您所有具有会话终端(如屏幕上的窗口)的进程的 UID。我使用 UID 来清除“系统”用户(如 apache)和无人(高 UID),并忽略守护进程。

答案2

您可以尝试使用 grep 检查 who 和 ps 的输出:

~$ ps aux | grep screen

并根据用户进行过滤:

~$  ps aux | grep screen | grep $USER

(将 $user 替换为用户名)。

相关内容