Что такое 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, и все они вели себя следующим образом:
- Ctrl+Alt+F1: возврат на экран входа в графическую среду рабочего стола.
- Ctrl+Alt+F2: возврат в графическую среду рабочего стола.
- Ctrl+Alt+F3: открывает телетайп 3.
- Ctrl + Alt + F4 – открывает TTY 4.
- Ctrl + Alt + F5 – открывает телетайп 5.
- Ctrl + Alt + F6 – открывает TTY 6.
Наличие доступа к этим полноэкранным консолям позволяет людям, использующим установку Linux только из командной строки — и многие серверы Linux настроены таким образом — иметь несколько доступных консолей.
Вы когда-нибудь работали на Linux-машине с графическим окружением рабочего стола, и что-то вызывало зависание сеанса? Теперь вы можете переключиться на один из сеансов консоли TTY, чтобы попытаться исправить ситуацию.
Вы можете использовать top
и ps
, чтобы попытаться идентифицировать сбойное приложение, а затем использовать kill
, чтобы завершить его, или просто использовать shutdown
, чтобы попытаться завершить работу настолько изящно, насколько это позволяет состояние компьютера.
Три маленькие буквы с большой историей
Команда tty
получила свое название от устройства конца 1800-х годов, появившегося в Unix в 1971 году и по сей день являющегося частью Linux и Unix-подобных операционных систем.
У маленького парня целая история.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts