Какво е TTY в Linux? (и как да използвате командата tty)

Какво прави командата tty? Той отпечатва името на терминала, който използвате. TTY означава „телетипна машина“. Каква е историята зад името на командата? Това изисква малко повече обяснение.

Телепринтери от 1800 г

През 1830-те и 1840-те години машините, известни като телепринтери бяха разработени. Тези машини могат да изпращат въведени съобщения „надолу по проводника“ до отдалечени места. Съобщенията бяха въведени от подателя на някаква клавиатура. Те бяха отпечатани на хартия в получателя. Те бяха еволюционна стъпка телеграфия, на който преди това разчиташе Морс и подобни кодове.

Съобщенията бяха кодирани и предадени, след това получени, декодирани и отпечатани. Имаше няколко техники, използвани за кодиране и декодиране на съобщенията. Най-известният и един от най-плодотворните е патентован през 1874 г. от Емил Бодо, за когото скорост на предаване е именуван. Неговата схема за кодиране на знаци е предхождаща ASCII на 89 години.

Кодирането на Baudot в крайна сметка стана най-близкото нещо до стандарта в телепринтерното кодиране и беше прието от повечето производители. Оригиналният хардуерен дизайн на Baudot имаше само пет клавиша, подобни на клавишите на пианото. От оператора се изискваше да научи конкретна комбинация от клавиши за всяка буква. В крайна сметка системата за кодиране на Baudot беше съчетана с традиционна клавиатурна подредба.

За да отбележат този напредък, машините бяха наречени телетипни машини. Това беше съкратено до телетайпи и в крайна сметка до TTY. Така че това е мястото, където получаваме акроним TTY от, но какво общо има телеграфията с компютрите?

ASCII и Телекс

Когато ASCII пристигна през 1963 г., той беше приет от производителите на телетайпи. Въпреки изобретяването и широкото използване на телефона, телетипите все още се развиваха.

Телекс беше световна мрежа от телетайпи, която позволяваше да се изпращат писмени съобщения по целия свят. Те са основното средство за предаване на писмени съобщения в периода след Втората световна война до в бум на факс машина от 1980-те години.

  Как да стартирате SpeedTest от терминала на Linux

Компютрите също се развиваха. Те ставаха способни да взаимодействат с потребителите в реално време и да поддържат множество потребители. Старият партиден метод на работа стана недостатъчен. Хората не искаха да чакат 24 часа или повече за резултатите си. Правенето на купчини перфокарти и чакането за една нощ за резултати вече не беше приемливо.

Хората имаха нужда от устройство, което да им позволи да въвеждат инструкции и да получават резултатите, изпратени обратно до тях. Хората искаха ефективност.

Преназначен телетайпът

Телетайпът беше идеалният кандидат за входно/изходно устройство. В крайна сметка това беше устройство, предназначено да позволява съобщенията да се въвеждат, кодират, изпращат, получават, декодират и отпечатват.

Какво го интересува телетайпа, ако устройството в другия край на връзката не е друг телетайп? Докато говореше на същия кодиращ език и можеше да получава съобщения и да изпраща съобщения обратно, телетайпът беше доволен.

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

Хардуерно емулирани телетипове

Телетипите станаха основното средство за взаимодействие с големите мини и мейнфрейм компютри от онази епоха.

В крайна сметка те бяха заменени от устройства, които емулират тези електромеханични машини, използващи електроника. Тези имаха Катодно-лъчеви тръби (CRT) вместо хартиени ролки. Те не се разклащаха при доставяне на отговори от компютъра. Те позволяваха невъзможна досега функционалност, като преместване на курсора около екрана, изчистване на екрана, удебелен текст и т.н.

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

Софтуерно емулирани телетипове

В настолната среда на Linux и други подобни на Unix операционни системи като macOS, прозорецът на терминала и приложения като напр х-термин и Konsole са примери за виртуални телетайпове. Но те се емулират изцяло в софтуер. Те се наричат ​​​​псевдо-телетипове. Това беше съкратено до PTS.

И тук идва tty.

Какво може да ни каже?

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

  Как да инсталирате Terminus на Linux

Командата 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. Те са свързани към PTS едно и две.

Потребителят dave е показан като свързан към “:0”.

Това представлява екрана и клавиатурата, физически свързани към компютъра. Въпреки че екранът и клавиатурата са хардуерни устройства, те все още са свързани към мултиплексора чрез файл на устройството. tty разкрива, че е /dev/pts/2.

who
tty

Достъп до TTY

Можете да получите достъп до TTY сесия на цял екран, като задържите клавишите Ctrl+Alt и натиснете един от функционалните клавиши.

Ctrl+Alt+F3 ще изведе подканата за влизане на tty3.

Ако влезете и издадете командата tty, ще видите, че сте свързани към /dev/tty3.

  Как да използвате Steam поточно предаване в дома, за да играете игри на Windows на Linux

Това не е псевдо-телетип (мулиран в софтуер); това е виртуален телетайп (емулиран в хардуер). Той използва екрана и клавиатурата, свързани към вашия компютър, за да емулира виртуален телетайп, както правеше 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-подобни операционни системи и до днес.

Малкият има доста история зад гърба си.