Поиск по сайту:

Что такое TTY в Linux? (и как использовать команду tty)


Что делает команда tty? Он печатает имя терминала, который вы используете. TTY означает «телетайп». Какова история названия команды? Это требует немного больше объяснений.

Телетайпы 1800-х годов

В 1830-х и 1840-х годах были разработаны машины, известные как телепринтеры. Эти машины могли отправлять напечатанные сообщения «по проводам» в отдаленные места. Сообщения печатались отправителем на своего рода клавиатуре. Они были напечатаны на бумаге на приемной стороне. Они были эволюционным шагом в телеграфии, которая ранее полагалась на коды Морзе и подобные.

Сообщения кодировались и передавались, затем принимались, декодировались и печатались. Для кодирования и декодирования сообщений использовалось несколько методов. Самый известный и один из самых плодовитых был запатентован в 1874 году Эмилем Бодо, в честь которого названа скорость передачи данных. Его схема кодирования символов предшествовала ASCII на 89 лет.

Кодировка Бодо в конечном итоге стала наиболее близкой к стандарту кодировки телетайпа и была принята большинством производителей. Первоначальный аппаратный дизайн Бодо имел всего пять клавиш, похожих на клавиши пианино. Оператор должен был выучить определенную комбинацию клавиш для каждой буквы. В конце концов, система кодирования Бодо была связана с традиционной раскладкой клавиатуры.

Чтобы отметить это достижение, машины были названы телетайпами. Это было сокращено до телетайпов и, в конечном итоге, до TTY. Вот откуда мы получили аббревиатуру TTY, но какое отношение телеграфия имеет к вычислениям?

ASCII и телекс

Когда в 1963 году появился ASCII, он был принят производителями телетайпов. Несмотря на изобретение и широкое использование телефона, телетайпы по-прежнему пользовались популярностью.

Телекс – это всемирная сеть телетайпов, которая позволяла отправлять письменные сообщения по всему миру. Они были основным средством передачи письменных сообщений в период после Второй мировой войны до бума факсимильных аппаратов 1980-х годов.

Эволюционировали и компьютеры. Они становились способными взаимодействовать с пользователями в режиме реального времени и поддерживать нескольких пользователей. Старый пакетный метод работы стал недостаточным. Люди не хотели ждать результатов 24 часа или дольше. Делать стопки перфокарт и ждать результатов всю ночь было уже неприемлемо.

Людям требовалось устройство, которое позволяло бы им вводить инструкции и получать результаты, отправленные им обратно. Люди хотели эффективности.

Телетайп перепрофилирован

Телетайп был идеальным кандидатом на роль устройства ввода/вывода. В конце концов, это было устройство, предназначенное для ввода, кодирования, отправки, получения, декодирования и печати сообщений.

Какое дело телетайпу, если устройство на другом конце соединения не было другим телетайпом? Пока он говорил на том же языке кодирования и мог принимать сообщения и отправлять сообщения в ответ, телетайп был счастлив.

И, конечно же, использовалась более-менее стандартная клавиатура.

Телетайпы с аппаратной эмуляцией

Телетайпы стали стандартным средством взаимодействия с большими мини-компьютерами и мейнфреймами той эпохи.

Со временем их заменили устройства, которые эмулировали эти электромеханические машины с использованием электроники. У них были электронно-лучевые трубки (ЭЛТ) вместо бумажных рулонов. Они не тряслись при доставке ответов с компьютера. Они допускали невозможные до сих пор функции, такие как перемещение курсора по экрану, очистка экрана, выделение текста жирным шрифтом и так далее.

DEC VT05 был ранним примером виртуального телетайпа и предком знаменитого DEC VT100. Были проданы миллионы DEC VT100.

Телетайпы с программной эмуляцией

В среде рабочего стола Linux и других Unix-подобных операционных систем, таких как macOS, окно терминала и приложения, такие как x-term и Konsole, являются примерами виртуальных телетайпов. Но они полностью эмулируются в программном обеспечении. Их называют псевдотелетайпами. Это было сокращено до PTS.

И вот здесь на помощь приходит tty.

Что может сказать нам tty?

В Linux есть мультиплексор псевдотелетайпов, который обрабатывает соединения со всеми псевдотелетайпами окна терминала (PTS). Мультиплексор является ведущим, а PTS — ведомыми. Ядро обращается к мультиплексору через файл устройства, расположенный в /dev/ptmx.

Команда tty напечатает имя файла устройства, которое ваш ведомый псевдотелетайп использует для взаимодействия с ведущим устройством. И это, по сути, номер вашего окна терминала.

Давайте посмотрим, что сообщает tty для нашего окна терминала:

tty

Ответ показывает, что мы подключены к файлу устройства в /dev/pts/0.

Наше терминальное окно, которое представляет собой программную эмуляцию телетайпа (TTY), взаимодействует с мультиплексором псевдотелетайпа как псевдотелетайп (PTS). И это оказывается нулевым номером.

Тихий вариант

Параметр -s (тихий) приводит к тому, что tty не генерирует вывод.

tty -s

Однако он создает выходное значение:

  • 0: если стандартный ввод поступает с устройства TTY, эмулированного или физического.
  • 1: если стандартный ввод не поступает с устройства TTY.
  • 2: синтаксическая ошибка, использовались неверные параметры командной строки.
  • 3: произошла ошибка записи.

Это, вероятно, будет наиболее полезным в сценариях Bash. Но даже в командной строке мы можем продемонстрировать, как выполнить команду, только если вы работаете в окне терминала (сеанс TTY или PTS).

tty -s && echo "In a tty"

Поскольку мы работаем в сеансе TTY, наш код выхода равен 0, и выполняется вторая команда.

Кто Команда

Другие команды могут раскрыть ваш номер TTY. Команда who выводит информацию обо всех вошедших в систему пользователях, включая вас.

Алек и Мэри удаленно подключены к компьютеру с Linux. Они подключены к PTS 1 и 2.

Пользователь dave показан как подключенный к «:0».

Это представляет собой экран и клавиатуру, физически подключенные к компьютеру. Несмотря на то, что экран и клавиатура являются аппаратными устройствами, они по-прежнему подключены к мультиплексору через файл устройства. tty показывает, что это /dev/pts/2.

who
tty

Доступ к телетайпу

Вы можете получить доступ к полноэкранному сеансу TTY, удерживая клавиши Ctrl+Alt и нажимая одну из функциональных клавиш.

Ctrl+Alt+F3 вызовет приглашение для входа в tty3.

Если вы войдете в систему и введете команду tty, вы увидите, что вы подключены к /dev/tty3.

Это не псевдотелетайп (эмулируемый программно); это виртуальный телетайп (эмулируемый аппаратно). Он использует экран и клавиатуру, подключенные к вашему компьютеру, для эмуляции виртуального телетайпа, как это делал DEC VT100.

Вы можете использовать функциональные клавиши Ctrl+Alt с функциональными клавишами от F3 до F6 и открыть четыре сеанса TTY, если хотите. Например, вы можете войти в tty3 и нажать Ctrl+Alt+F6, чтобы перейти к tty6.

Чтобы вернуться к графической среде рабочего стола, нажмите Ctrl+Alt+F2.

Нажатие Ctrl+Alt+F1 вернет вас к приглашению входа в систему сеанса графического рабочего стола.

В свое время от Ctrl+Alt+F1 до Ctrl+Alt+F6 открывались полноэкранные консоли TTY, а Ctrl+Alt+F7 возвращали вас в графическую среду рабочего стола. Если вы используете более старый дистрибутив Linux, ваша система может вести себя именно так.

Это было протестировано на текущих выпусках Manjaro, Ubuntu и Fedora, и все они вели себя следующим образом:

  1. Ctrl+Alt+F1: возврат на экран входа в графическую среду рабочего стола.
  2. Ctrl+Alt+F2: возврат в графическую среду рабочего стола.
  3. Ctrl+Alt+F3: открывает телетайп 3.
  4. Ctrl + Alt + F4 – открывает TTY 4.
  5. Ctrl + Alt + F5 – открывает телетайп 5.
  6. Ctrl + Alt + F6 – открывает TTY 6.

Наличие доступа к этим полноэкранным консолям позволяет людям, использующим установку Linux только из командной строки — и многие серверы Linux настроены таким образом — иметь несколько доступных консолей.

Вы когда-нибудь работали на Linux-машине с графическим окружением рабочего стола, и что-то вызывало зависание сеанса? Теперь вы можете переключиться на один из сеансов консоли TTY, чтобы попытаться исправить ситуацию.

Вы можете использовать top и ps, чтобы попытаться идентифицировать сбойное приложение, а затем использовать kill, чтобы завершить его, или просто использовать shutdown, чтобы попытаться завершить работу настолько изящно, насколько это позволяет состояние компьютера.

Три маленькие буквы с большой историей

Команда tty получила свое название от устройства конца 1800-х годов, появившегося в Unix в 1971 году и по сей день являющегося частью Linux и Unix-подобных операционных систем.

У маленького парня целая история.

RELATED: Best Linux Laptops for Developers and Enthusiasts