![确定哪个 tty 位于“前台”/“当前显示”?](https://linux22.com/image/164753/%E7%A1%AE%E5%AE%9A%E5%93%AA%E4%B8%AA%20tty%20%E4%BD%8D%E4%BA%8E%E2%80%9C%E5%89%8D%E5%8F%B0%E2%80%9D%2F%E2%80%9C%E5%BD%93%E5%89%8D%E6%98%BE%E7%A4%BA%E2%80%9D%EF%BC%9F.png)
在linux中,我可以使用组合键Alt-Ctrl-F1
,Alt-Ctrl-F2
...切换到tty1
我可以使用的不同组合man chvt
。
使用该命令tty
我还可以显示我所在的电传打字机/Linux 虚拟控制台。
但是,如果我在xterm
或gnome-terminal
tty 中,则会显示相关的伪终端。
鉴于这一切:
- 我如何知道哪个是当前“活动的”
tty
(意味着它显示在屏幕上)?
这在某种程度上是解决方案(但是它看起来扭曲并且依赖于loginctl登录,必须有一个非系统化找出来):
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
让运行,手动切换到另一个控制台,等待几秒钟并切换回来,然后你会看到在查看时报告了另一个控制台。