我打开了 4 个终端,但是当用who
or检查它们时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
怎么可能显示所有终端?
问题在于某些终端的工作方式。特别是,我之前使用过
sakura
的gnome-terminal
(Ubuntu 的默认设置)不注册终端。事实上,有一个gnome-terminal 的错误报告,它以 WONTFIX 状态关闭。因此,查找打开的终端会话的数量应侧重于查找 shell 会话或关联
pts
/tty
设备的父进程,如以下问题所示:此命令的唯一问题是它应该显示来自所有用户的进程。我个人的方法是通过
-u
选项过滤掉我自己的进程(即我自己打开的终端)并解析awk
: