Ttys не просто устройства ввода / вывода. Они также выполняют специальную работу, выступая в качестве управляющего терминала для сеанса, например, отправляя сигналы (Ctrl + C). / dev / ttyNN - это виртуальные консоли, которые являются полноэкранными дисплеями на мониторе.
Терминалы начинаются с / dev / tty1. Обычно вы можете переключиться на эти консоли, нажав клавиши Ctrl + Alt + Fn.
Например, Ctrl + Alt + F1 приведет вас к первому виртуальному терминалу. В настоящее время большинство дистрибутивов Linux используют X-сервер от tty1. Таким образом, нажатие Ctrl + Alt + F1 может не иметь эффекта.
$ ps ax | grep Xorg | grep -v grep
1504 tty1 Ss+ 44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1
Ctrl + Alt + F2 приведет вас ко второму терминалу. Обычно в дистрибутивах запускается программа входа в систему (agetty) на виртуальном терминале.
$ ps ax | grep tty2 | grep -v grep
31865 tty2 Ss+ 0:00 /sbin/agetty tty2 38400
Программы входа в систему предоставляют вам приглашение для входа в систему и позволяют войти с именем пользователя / паролем. Скрипты инициализации решают, где будут запускаться все программы входа в систему. Поэтому, в зависимости от этого, вы можете видеть или не видеть приглашение для входа, скажем, tty9. Чтобы вернуться к интерфейсу GUI, нажмите Ctrl + Alt + F1 (как в примере, приведенном выше).
/ dev / tty0 - это специальное устройство, которое указывает на текущий терминал. Таким образом, независимо от того, откуда вы его запускаете (с любой виртуальной консоли), все, что читается из / записывается в tty0, отправляется на ваш текущий терминал.
Второй столбец в «ps ax» также содержит управляющий терминал программы. Для некоторых программ, таких как демоны, вы можете видеть, что столбец - «?», Что означает, что они не связаны с терминалом.
/ dev / pts / 0 и т. д. являются псевдо-терминальными устройствами, которые не подключены к системному дисплею. например, терминал, который вы получаете при открытии терминала gnome или любого другого терминала с графическим интерфейсом. Это клиент-серверный подход, при котором клиентская часть будет экспортироваться в такие программы, как bash. Данные, отправляемые программой на псевдотерминал, отправляются на сторону «сервера» (которая обычно отслеживается другой программой, такой как gnome-терминал). Процесс управления (на стороне сервера) определяет, что необходимо отправить в терминал, что в конечном итоге увидит клиент. Эти устройства помогают вам открывать несколько «графических терминалов» без каких-либо ограничений в вашей системе, по-прежнему предоставляя такие же старые терминалы, как элементы управления (ioctl (), настройка цвета, отправка сигналов [Ctrl + C] и т. Д.).