Що таке TTY в Linux? (і як використовувати команду tty)

Що робить команда tty? Він друкує назву терміналу, який ви використовуєте. TTY означає «телетайп». Яка історія за назвою команди? Це вимагає трохи більше пояснення.

Телепринтери 1800-х років

У 1830-1840-х роках машини, відомі як телепринтерів були розроблені. Ці машини могли надсилати введені повідомлення «по дроту» у віддалені місця. Повідомлення набиралися відправником на клавіатурі. Вони були надруковані на папері в одержувачі. Вони були еволюційним кроком телеграфії, на який раніше покладався Морзе і подібні коди.

Повідомлення кодувалися та передавались, потім отримувались, декодувалися та друкувались. Для кодування та декодування повідомлень використовувалося кілька методів. Найвідоміший і один з найбільш плідних був запатентований в 1874 р Еміль Бодо, для кого швидкість передачі даних називається. Його схема кодування символів була попередньою ASCII до 89 років.

Згодом кодування Бодо стало найближчим до стандарту телепринтерного кодування, і воно було прийнято більшістю виробників. Оригінальний апаратний дизайн Бодо мав лише п’ять клавіш, схожих на клавіші піаніно. Оператор повинен був вивчити певну комбінацію клавіш для кожної літери. Згодом система кодування Бодо була поєднана з традиційною розкладкою клавіатури.

Щоб відзначити цей прогрес, машини отримали назву телетайп. Це було скорочено до телетайпів і, зрештою, до TTY. Отже, ось де ми отримуємо абревіатура TTY від, але яке відношення телеграфія має до обчислень?

ASCII і Телекс

Коли ASCII з’явився в 1963 році, він був прийнятий виробниками телетайпів. Незважаючи на винахід і широке поширення телефону, телетайпи все ще були міцними.

Телекс була всесвітня мережа телетайпів, що дозволяла надсилати письмові повідомлення по всьому світу. Вони були основним засобом передачі письмових повідомлень у період після Другої світової війни аж до 1999 року стріла факсу 1980-х років.

  Як зробити USB для Windows з терміналу Linux

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

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

Перепрофільований телетайп

Телетайп був ідеальним кандидатом як пристрій введення/виведення. Зрештою, це був пристрій, розроблений для того, щоб повідомлення можна було набирати, кодувати, надсилати, отримувати, декодувати та друкувати.

Яке значення має телетайп, якщо пристрій на іншому кінці з’єднання не був іншим телетайпом? Поки він говорив тією ж мовою кодування і міг отримувати повідомлення та надсилати повідомлення назад, телетайп був щасливий.

І, звичайно, він використовував більш-менш стандартну клавіатуру.

Апаратні емульовані телетайпи

Телетайпи стали стандартним засобом взаємодії з великими міні- та мейнфреймами тієї епохи.

Згодом вони були замінені пристроями, які імітували ці електромеханічні машини з використанням електроніки. Ці мали Електронно-променеві трубки (ЕПТ) замість рулонів паперу. Вони не тремтіли при доставці відповідей з комп’ютера. Вони дозволяли досі неможливі функціональні можливості, такі як переміщення курсору по екрану, очищення екрана, виділення жирного тексту тощо.

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

Програмне забезпечення емульованих телетайпів

У робочому середовищі Linux та інших Unix-подібних операційних систем, таких як macOS, вікно терміналу та програми, такі як х-термін і Konsole є прикладами віртуальних телетайпів. Але вони повністю емулюються в програмному забезпеченні. Їх називають псевдотелетипами. Це було скорочено до PTS.

І ось тут на допомогу приходить tty.

Що може нам розповісти?

У Linux є мультиплексор псевдотелетипу, який обробляє з’єднання з усіх псевдотелетипів вікна терміналу (PTS). Мультиплексор є ведучим, а PTS — підпорядкованими. Мультиплексор звертається ядром через файл пристрою, розташований за адресою /dev/ptmx.

  Як створити NAS Linux за допомогою Amahi

Команда 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 -s && відлуння

Оскільки ми працюємо в сеансі TTY, наш код виходу дорівнює 0, і виконується друга команда.

Команда хто

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

Алек і Мері віддалено підключені до комп’ютера Linux. Вони підключаються до ПТС один і два.

Користувач dave відображається як підключений до «:0».

Це відображає екран і клавіатуру, фізично підключені до комп’ютера. Незважаючи на те, що екран і клавіатура є апаратними пристроями, вони все одно підключені до мультиплексора через файл пристрою. tty показує, що це /dev/pts/2.

who
tty

Доступ до TTY

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

Ctrl+Alt+F3 відкриє запит на вхід для tty3.

  Як грати 7 days to die на Linux

Якщо ви увійдете в систему та введете команду 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, і всі вони вели себе так:

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.

Наявність доступу до цих повноекранних консолей дозволяє людям, які використовують інсталяції Linux лише з командного рядка — і багато серверів Linux налаштовані таким чином — мати доступні кілька консолей.

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

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

Три маленькі листи з великою історією

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

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