Отобразите все рабочие терминалы

Я открыл 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
задан 16 January 2019 в 14:12

1 ответ

Проблема происходит из-за того, как работают определенные терминалы. В частности, 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}'
2
ответ дан 7 December 2019 в 13:19

Другие вопросы по тегам:

Похожие вопросы: