Что такое 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 "В tty"

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

Команда ВОЗ

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

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

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

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

ВОЗ
tty

СВЯЗАННЫЕ: Как определить текущую учетную запись пользователя в Linux

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

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

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

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

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

Вы можете использовать функциональные клавиши Ctrl + Alt с функциональными клавишами от F3 до F6 и при желании открыть четыре сеанса телетайпа. Например, вы можете войти в 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 : открывает TTY 3.
  4. Ctrl + Alt + F4 : открывает TTY 4.
  5. Ctrl + Alt + F5 : открывает TTY 5.
  6. Ctrl + Alt + F6 : открывает телетайп 6.

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

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

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

СВЯЗАННЫЙ: Как убить процессы из терминала Linux

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

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

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