Виртуальные терминалы Linux Debian

На текущий момент времени многопользовательские системы с настоящими физическими терминалами, подключенными посредством интерфейса RS232 и его драйвера ttyS(4) к большой ЭВМ,-— экзотическая редкость. На персональных ЭВМ для взаимодействия с пользователем имеются .стандартные клавиатура, видеоадаптер и монитор, формирующие так называемую W: [консоль], которая используется драйвером виртуальных терминалов для эмуляции нескольких физических терминалов.

Узнать имя текущего терминала (а точнее — имя специального файла устройства терминального драйвера), на котором выполнен вход в систему, позволяет команда tty(1), а список всех терминальных входов пользователей команды users(1), who(1) и w(1).

Утилиты tty, users, who и w

flnn@ubuntu:~$ tty ↵

/dev/tty1

finn@ubuntu:~$ users ↵

bubblegum flnn iceking jake jake marceline

finn@ubuntu:~$ who ↵

Iceking        tty4               2015-03-27 10:46

bubblegum  tty5              2015-03-27 10:46

marceline  tty3                 2015-03-27 10:47

finn          tty1                    2015-03-27 10:46

jake          tty7                    2015-03-24 23:46

jake       pts/3                    2015-03-27 10:47 (:0.0)

finn@ubuntu:~$ w ↵

10:47:52 up 2 days, 11:02, 9 users, load average: 0,05,  0,18,  0,27

USER           TTY                FROM                        LOGIN      IDLE      JCPU     PCPU  WHAT
Iceklng         tty4                                                     10:46         1:20        0.05s     0.00s     -sh
bubblegu      tty5                                                     10:46         1:04        0.04s     0.00s     -sh
marcelin       tty3                                                     10:47        32.00s     0.06s     0.06s    -sh
finn                tty1                                                     10:46          1:04        0.50s     0.44s     w
jake                tty7                                                    Tue23        2days      25:36     2.88s    gnome-session
jake               pts/3               :0.0                             10:47        0.00s       0.21s      0.00s  -bash

Драйвер виртуального терминала позволяет переключаться между эмулируемыми терминалами при помощи сочетания клавиш Ctrl + F1, …, Ctrl + F12 (первые двенадцать терминалов из 63 возможных), Alt + ← в для переключения на предыдущий, Alt + → для переключения на следующий виртуальный терминал. При переключении из графического виртуального терминала на другой виртуальный терминал необходимо добавлять к сочетанию еще и клавишу Ctrl, т. к. сочетания с клавишей  Alt востребованы самим графическим интерфейсом, например Alt + F4 закрывает активное окно. Таким образом, для переключения из графического на третий виртуальный терминал используется сочетание Alt + Ctrl + F3. Также, драйвер виртуальных терминалов позволяет листать буфер вывода виртуального терминала при помощи сочетаний Ctrl +PgUp и Ctrl +PgDn (к сожалению, после переключения терминалов буфер пропадает).

Как и любым другим, драйвером виртуальных терминалов можно управлять при помощи специально предназначенных команд, например, программа chvt(1) позволяет переключаться на заданный терминал по его номеру, а команда программы setfont(l) — загружать шрифты, формирующие начертания алфавитно-цифровых знаков.

Псевдотерминалы

При работе в оконной системе X Window System используются графические терминалы, тогда как для командного интерфейса требуется алфавитно-цифровой терминал. В этом случае он эмулируется при помощи драйвера псевдотерминала pty(4) (pseudo tty) и приложения-посредника— эмулятора терминала (например, xtern или gnone-terminal), который связывает действительный обмен d графическом окне с мультиплексором псевдотерминалов ptmx(4) (pseudoterminal multiplexer), а тот, в свою очередь, присоединен драйвером к подчиненному псевдотерминалу pts(4) (pseudoterminal slave) командного интерфейса.

Таким образом, командный интерпретатор и запускаемые им программы работают с воображаемом псевдотерминалом так, как будто окно графического приложения является настоящим физическим дисплеем и настоящей физической клавиатурой настоящего терминала. В примере вышеприведенного листинга пользователь finn зарегистрирован в системе на первом виртуальном терминале tty1, а пользователь jake зарегистрирован на седьмом (графическом) виртуальном терминале tty7 в оконной системе и работает с командным интерфейсом на третьем псевдотерминале pts/3 в окне эмулятора терминала.

Аналогично, при подключении удаленного алфавитно-цифрового терминала посредством протоколов удаленного доступа (например, SSH) приложение-посредник (например, демон сетевой службы sshd) связывает действительный обмен в сетевом соединении с мультиплексором псевдотерминалов.

Нужно заметить, что на этапе входа пользователя в систему посредством алфавитно-цифрового терминала последовательно запускаются: обработчик терминалов, обработчик аутентификации и авторизации пользователей, а затем командный интерпретатор, например bash(1). Именно getty(1) предъявляет пользователю заставку операционной системы и приглашение к вводу имени пользователя, a login(1) — приглашение к вводу пароля, сообщение о последнем успешном входе и сообщение дня.

Аналогичные процессы происходят при любом входе пользователя в систему, например через псевдотерминалы «графического» или «сетевого» доступа. В любом случае после аутентификации и авторизации основной программой (и первой в сеансе пользователя), интерпретирующей вводимые пользователем команды, является командный интерпретатор.

Добавить комментарий