Tty

確定哪個 tty 在“前台”/“目前顯示”?

  • November 28, 2019

在 linux 中,我可以使用組合鍵Alt-Ctrl-F1Alt-Ctrl-F2… 來切換到tty1我可以使用的不同man chvt

使用該命令tty,我還可以顯示我正在使用的電傳打字機/linux 虛擬控制台。

但是,如果我在 tty 中xterm或在gnome-terminaltty 中,將顯示相關的偽終端。

鑑於這一切:

  • 我如何判斷哪個是目前“活動” tty(意味著它正在顯示在螢幕上)?

這在某種程度上是一種解決方案(但是它看起來很扭曲並且依賴於 loginctl logind,必須有一個非 systemd才能找到):

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'
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

讓執行,手動切換到另一個控制台,等待幾秒鐘再切換回來,然後你會看到另一個控制台在你看的時候被報告了。

引用自:https://unix.stackexchange.com/questions/554600