Я открыл 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
Как мог отобразить весь терминал?
Проблема происходит из-за того, как работают определенные терминалы. В частности, sakura
и gnome-terminal
(Значение по умолчанию Ubuntu), который я использовал прежде, не регистрируют терминал. Существует, на самом деле, отчет об ошибках для терминала гнома, который закрывается с состоянием WONTFIX.
Нахождение количества открытых терминальных сеансов, поэтому, должно быть сфокусировано на нахождении родительских процессов сессий оболочки или связано 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}'