我想获得 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 替换为用户名)。