显示所有工作终端

显示所有工作终端

我打开了 4 个终端,但是当使用who或检查它们时w

me@alpha:~$ w
 17:28:19 up  3:09,  1 user,  load average: 0.51, 0.35, 0.34
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
me :0       :0               14:20   ?xdm?   3:27   0.01s /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESS
me@alpha:~$ who
me   :0           2019-01-16 14:20 (:0)

它仅显示一个名为“:0”的终端

如果在 macos 上它将显示

me at mbp in ~
$ who
me  console      2019-01-04 08:57
me  ttys000      2019-01-04 08:57
me  ttys001      2019-01-04 08:57

如何显示所有的终端?

答案1

这个问题是由于某些终端的工作方式造成的。特别是,我以前使用过的sakuragnome-terminal(Ubuntu 的默认设置)没有注册终端。事实上,有一个错误报告对于 gnome-terminal,它以 WONTFIX 状态关闭。

因此,查找打开的终端会话数应该集中于查找 shell 会话的父进程或关联的pts/tty设备,如下所示这个问题

$ ps -eo tty= | sort -u 

此命令的唯一问题是它应该显示所有用户的进程。我个人的做法是通过-u选项过滤掉我自己的进程(即我自己打开的终端),并使用以下命令进行解析awk

#  Note that this includes tabs as well, not just open windows
$ ps -u $USER -o tty | awk 'NR>1 && $1 != "?" {a[$0]++};END{for(val in a) print val}'

相关内容