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

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

Телепринтеры 1800-х годов

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

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

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

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

ASCII и телекс

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

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

  Как установить 0 AD в Linux

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

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

Телетайп переделан

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

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

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

Аппаратно эмулированные телетайпы

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

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

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

Программно-эмулированные телетайпы

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

И тут на помощь приходит tty.

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

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

  Как настроить программу чтения RSS-каналов на рабочий стол Linux

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

Посмотрим, какие отчеты tty для нашего окна терминала:

tty

tty в окне терминала

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

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

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

Параметр -s (без вывода сообщений) заставляет tty не генерировать вывод.

tty -s

tty -s в окне терминала

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

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

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

tty -s && echo "In a tty"

tty -s && эхо

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

Команда ВОЗ

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

Алек и Мэри удаленно подключены к компьютеру с Linux. Они подключены к ПТС один и два.

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

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

who
tty

кто и tty в окне терминала

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

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

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

tty3 консоль

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

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

  7 лучших погодных приложений для Linux

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

tty6 консоль

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

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

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

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

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

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

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

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

Три маленьких письма с большой историей

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

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