Tty linux что это такое

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

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

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

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

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

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

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

ASCII и Telex

Когда в 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 для нашего окна терминала:

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

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

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

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

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

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

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

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

Команда who

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

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

Пользователь dave показан как подключенный к «:0». Это экран и клавиатура, физически подключённые к компьютеру.

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

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

Вы можете получить доступ к полноэкранному сеансу 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, и все они вели себя следующим образом:

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

У Kali Linux графический интерфейс открывается при нажатии Ctrl+Alt+F7.

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

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

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

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

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

Источник

5. Специальные файлы терминалов: /dev/tty . и т.д.

«tty» — сокращение от «телетайп». Первые терминалы были телетайпами (типа дистанционно управляемых пишущих машинок). См. подраздел «Телетайпы».

5.1 Терминал на последовательном порту

Компьютер рассматривает терминал как устройство на последовательном порту.

Для каждого такого терминала имеется специальный файл в каталоге (устройств) /dev. /dev/ttyS0 — специальный файл для последовательного порта, известный как COM1 в мире DOS/Windows. Чтобы посылать текст терминалу, вы можете переназначить стандартный вывод некоторой команды в командной строке соответствующему специальному файлу. Например команда «echo test> /dev/ttyS1» должна послать слово «test» на терминал, подключенный к COM2 (подразумевается, что вам разрешена запись в /dev/ttyS1). Точно так же «cat my_file > /dev/ttyS0» пошлет содержание файла my_file в COM1 (ttyS0).

В дополнение к ttyS0 (/dev/ttyS0), ttyS1, ttyS2, и т.д. («S» означает последовательный порт) имеется также ряд устройств «cua»: cua0, cua1, cua2, и т.д.

сua0 — тот же самый порт как ttyS0 и т.д. «Cu» cua означает CalloUt. Серия устройств ttyS соответствуют Posix, в то время как при использование cua можно открыть порт, про который линии управления модемом говорят, что он не готов. Это говорит о том, что ряд cua включен только для обратной совместимости, так что вы видимо должны использовать ряд ttyS.

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

Псевдо терминалы не имеют уникального физического разъема на компьютере.

Они используются для эмуляции последовательного порта. Например, если кто-то соединяется через telnet с вашим компьютером по сети, они могут подсоединиться к устройству /dev/ptyp2 (порт псевдотерминала). В XWINDOWS, программа эмуляции терминала xterm использует псевдотерминалы.

Также его используют программы любительского радио. При использовании некоторого прикладного программного обеспечения можно иметь 2 или более псевдотерминала, присоединенных на один и тот же физический последовательный порт.

Псевдотерминалы образуют пары типа ttyp3 и ptyp3. pty. — это хозяин или управляющий терминал, а tty. — подчиненный. ttyq5 — также псевдотерминал, как — ttysc (с — шестнадцатеричная цифра).

Более точно, главные псевдотерминалы — /dev/pty[p-s]n, а соответствующие подчиненные — /dev/tty[p-s]n, где n — шестнадцатеричная цифра.

Читайте также:  Переключения языка интерфейса windows

5.3 Управляющие терминалы /dev/tty

/dev/tty означает управляющий терминал (если есть) для текущего процесса (процесс, который использует «/dev/tty» в команде). Чтобы выяснять, к которому tty присоединен процесс, используют команда «ps -a» в командной строке. Посмотрите столбец «tty». Для оболочки, в которой вы находитесь, /dev/tty — это терминал, который вы сейчас используете.

Напечатайте «tty» в командной строке, чтобы увидеть название терминала (см. man tty(1)). /dev/tty — нечто вроде связи с фактически именем устройства терминала с некоторыми дополнительными возможностями для программистов на C : см. man tty(4).

5.4 «Терминалы» /dev/ttyI?

? означает целое число. Одно из применений их в Linux — пакетный драйвер ISDN: isdn4linux. ttyI? является неким подобием ttyS? . Имеется также cui? , который является кое-чем вроде cua?. ttyI и cui эмулируют модемы и могут принимать команды модемов.

5.5 Консоль: /dev/tty?

В Linux монитор PC называется консолью и имеет несколько специальных файлов устройств, связанных с нею: tty0, tty1, tty2 и т.д. Когда вы входите в систему, то попадаете на tty1. Чтобы перейти на tty2 нажимите Alt-F2. tty1, tty2, и т.д. — «виртуальные терминалы» (иногда называются «виртуальными консолями»). вы можете регистрировать на различных виртуальных терминалах и таким образом осуществлять несколько различных сеансов с компьютером в одно и тоже время. вы переключаетесь между ними, используя клавиши Alt-F?, где «?» является номером виртуального терминала, на который вы хотите перейти. Консоль также известна как /dev/tty0, и сообщения системы могут идти на это устройство и отображаться на вашей консоли. Только система или root могут писать на /dev/tty0, с которым иногда компонуется /dev/console. Сообщения сстемы могут быть также записаны непосредственно по аппаратному адресу платы последовательного порта, таким минуя /dev/tty0. Для большего количества информации о консоли см. «Консоль Linux».

5.6 Создание устройства командой mknod

В каталоге /dev находится множество специальных файлов устройств. Если нужных вам файлов нет там, то вы можете попробовать создать их командой «mknod». См. man-страницу tty(4) для информации о том, как сделать это для последовательных портов. Чтобы использовать mknod, вы должны знать major и minor числа устройства. вы можете посмотреть нужные вам числа, используя команду «ls -l» в каталоге /dev. Она отобразит major и minor числа существующих специальных файлов.

Источник

Что такое TTY в Linux?

Обновл. 9 Сен 2021 |

Команда tty (сокр. от англ. «teletypewriter») выводит имя используемого вами терминала в Linux. Но какая предыстория стоит за названием этой команды и чем она может быть нам полезна? Сейчас разберемся.

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

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

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

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

В ознаменование этого прогресса машины были названы «телетайпными пишущими машинами» или просто «телетайпами» (англ. «teletypes», сокр. от «teletypewriters»). В дальнейшем название урезали до TTY. Вот откуда появилась аббревиатура TTY. Но какое отношение телеграф имеет к вычислительной технике?

Телетайп времен Второй мировой войны

ASCII и Telex

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

Телекс (англ. «Telex», сокр. от «telegraph exchange») — это всемирная сеть телетайпов, которая позволяла отправлять письменные сообщения по всему миру. Они были основным средством передачи письменных сообщений в период после Второй мировой войны вплоть до бума факсимильной связи (факсов) в 1980-х годах.


Советский факсимильный аппарат «ФТА-П», 1960 год

В тоже время развивались и компьютеры. Они становились способными взаимодействовать с пользователями в режиме реального времени и поддерживать работу сразу с несколькими из них. При этом старый пакетный метод работы с устаревшими аппаратами все сильнее обнажал свои недостатки. Люди не хотели тратить целые сутки (а то и больше) на ожидание результатов выполнения вводимых ими программ. Делать стопки перфокарт и ждать результатов всю ночь было уже неприемлемо: требовалось устройство, которое позволяло бы вводить инструкции и сразу получать результат. Нужна была эффективность. И телетайп стал идеальным кандидатом для использования в качестве устройства ввода-вывода.

Читайте также:  Как поставить эквалайзер windows 10

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

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

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

Видеотерминал DEC VT05 был ранним примером виртуального телетайпа и предком знаменитого DEC VT100. Продажи DEC VT100 исчислялись миллионами штук.

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

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

Команда tty

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

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

Давайте посмотрим, какую информацию выведет команда tty для нашего окна терминала:

Как видите, мы подключены к специальному файлу устройства /dev/pts/1.

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

Тихий режим

Опция -s (silent) приводит к тому, что команда tty перестает генерировать выходные данные:

Некоторые служебные значения, возвращаемые командой tty:

0 — если стандартный ввод поступает с устройства TTY (эмулированного или физического).

1 — если стандартный ввод не поступает с устройства TTY.

2 — синтаксическая ошибка, использовались неправильные параметры командной строки.

3 — произошла ошибка записи.

Данные значения будут наиболее полезны при написании bash-скриптов. Но даже в командной строке мы можем продемонстрировать, как выполнить команду при условии, что вы работаете в окне терминала (сеанс TTY или PTS).

tty -s && echo «In a tty»

Примечание: Оператор && является логическим оператором И. Если в командной строке находится command1 && command2 , то command2 выполняется только в том случае, если статус выхода из команды command1 равен 0 , что говорит об успешном её завершении.

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

Команда who

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

На следующем скриншоте видно, что к компьютеру с Linux подключен пользователь diego. Часть :0 представляет собой экран и клавиатуру, физически подключенные к компьютеру. Несмотря на то, что экран и клавиатура являются аппаратными устройствами, они все равно соединены с мультиплексором через файл устройства /dev/pts/1.

Доступ к 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 вернет вас на экран входа в сеанс графического рабочего стола.

Следующие сочетания клавиш были протестированы на текущих версиях дистрибутивов Debian, Manjaro, Ubuntu и Fedora:

Ctrl+Alt+F1 — возвращает вас на экран входа в графическую среду рабочего стола.

Ctrl+Alt+F2 — возвращает вас в графическую среду рабочего стола.

Ctrl+Alt+F3 — открывает tty3.

Ctrl+Alt+F4 — открывает tty4.

Ctrl+Alt+F5 — открывает tty5.

Ctrl+Alt+F6 — открывает tty6.

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

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

Заключение

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

Источник

Оцените статью