Назад | Перейти на главную страницу

Как узнать активный в настоящее время виртуальный терминал Linux при подключении через ssh?

Ситуация следующая.

У меня есть многопользовательский настольный компьютер с Debian Linux 6.0 и видеокарта ATI с одним подключенным монитором. Имею к нему рут-доступ. Может быть запущено несколько сеансов KDE, например:

$ w
 21:51:30 up ? days,  4:22,  ? users,  load average: 1.72, 1.68, 1.67
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
u1       pts/0    :0               Sat18    4days  0.00s 11.68s kdeinit4: kded4 [kdeinit]                      
u2       pts/5    :1               Mon17    2days  0.00s  6.65s kdeinit4: kded4 [kdeinit]                      

Итак, используются два виртуальных терминала, tty7 и tty8:

$ ps aux|grep /usr/bin/[X]
root      2944  3.1 12.4 670040 1019904 tty7   Ss+  Aug27 187:52 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-??????
root      5507  0.9  3.7 425136 309676 tty8    Ss+  Aug29  29:38 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-??????

Но, конечно, только один из них активен в любой момент, то есть отображается на мониторе. Кто-то, сидящий за клавиатурой, может переключаться между ними, используя Ctrl + Alt + F [78]

Итак, я подключаюсь по ssh с удаленного хоста. Мне нужно знать, какой X DISPLAY сейчас активен. Является ли это возможным? Я погуглил повсюду и не могу найти ответ.

В качестве альтернативы, если вы не хотите использовать sudo выяснить, какой ток tty есть, вы можете использовать специфичные для Linux sysfs запись:

$ cat /sys/class/tty/tty0/active
tty8

fgconsole - это то, что вы ищете

http://linux.die.net/man/1/fgconsole