Determine qual tty está em "primeiro plano"/"exibido atualmente"?

Determine qual tty está em "primeiro plano"/"exibido atualmente"?

No Linux eu posso usar as combinações de teclas Alt-Ctrl-F1, Alt-Ctrl-F2... para mudar para as diferentes tty1que eu pudesse usar man chvt.

usando o comando ttytambém é exibido o console virtual teletype/linux em que estou.

No entanto, se eu estiver dentro xtermou dentro do gnome-terminaltty, exibirei o pseudo-terminal relevante.

Considerando tudo isso:

  • Como posso saber qual está atualmente "ativo" tty(ou seja, está sendo exibido na tela)?

Esta seria de certa forma a solução (no entanto, parece distorcida e depende do loginctl logind, deve haver umnão-systemddescobrir):

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'

Responder1

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

tty0refere-se ao console virtual atual (compareesta resposta). Lendo /sys/devices/virtual/tty/tty0/activevocê pode saber qual console é esse.

"Atual" significa o que você vê, não onde catestá sendo executado. Por exemplo, se você iniciar este loop

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

deixe entrar, mude manualmente para outro console, espere alguns segundos e volte, então você verá que o outro console foi relatado quando você estava olhando para ele.

informação relacionada