我打开了 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
这个问题是由于某些终端的工作方式造成的。特别是,我以前使用过的sakura
和gnome-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}'