Определите, какой tty находится на «переднем плане» / «отображается в данный момент»?

Определите, какой tty находится на «переднем плане» / «отображается в данный момент»?

В Linux я могу использовать комбинации клавиш Alt-Ctrl-F1, Alt-Ctrl-F2... для переключения на разные экраны, tty1как я мог бы использовать man chvt.

с помощью этой команды ttyя также получаю отображение виртуальной консоли teletype/linux, на которой я нахожусь.

Однако если я нахожусь в xtermили в gnome-terminaltty, отобразится соответствующий псевдотерминал.

Учитывая все это:

  • Как узнать, какой из них в данный момент «активен» tty(т. е. отображается на экране)?

Это было бы своего рода решением (хотя оно кажется искаженным и полагается на loginctl logind, должно бытьнесистемныйвыяснить):

for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do loginctl show-session -p State -p TTY  $sessionid; done | grep "State=active" -B1 | head -n 1 | sed 's/.*=//g'

решение1

cat /sys/devices/virtual/tty/tty0/active

tty0относится к текущей виртуальной консоли (сравнитеэтот ответ). Прочитав, /sys/devices/virtual/tty/tty0/activeвы сможете узнать, какая это консоль.

«Текущий» означает то, что вы видите, а не то, где catработает. Например, если вы начинаете этот цикл

while sleep 1; do
   cat /sys/devices/virtual/tty/tty0/active
done

запустите его, вручную переключитесь на другую консоль, подождите несколько секунд и переключитесь обратно, затем вы увидите, что другая консоль была зарегистрирована, когда вы на нее смотрели.

Связанный контент