Ce este un TTY pe Linux? (și Cum să utilizați comanda tty)

Ce face comanda tty? Tipărește numele terminalului pe care îl utilizați. TTY înseamnă „teletypewriter”. Care este povestea din spatele numelui comenzii? Asta necesită puțin mai multă explicație.

Teleimprimatoare din anii 1800

În anii 1830 și 1840, mașinile cunoscute ca teleimprimatoare Au fost dezvoltate. Aceste mașini ar putea trimite mesaje tastate „în jos” în locații îndepărtate. Mesajele au fost tastate de către expeditor pe un fel de tastatură. Au fost tipărite pe hârtie la capătul de primire. Au fost un pas evolutiv telegrafie, pe care se bazase anterior Morse și coduri similare.

Mesajele au fost codificate și transmise, apoi primite, decodificate și tipărite. Au fost mai multe tehnici folosite pentru a codifica și decoda mesajele. Cel mai faimos și unul dintre cei mai prolifici, a fost brevetat în 1874 de Émile Baudot, pentru care baud rate se numeste. Schema lui de codificare a caracterelor era anterioară ASCII cu 89 de ani.

Codificarea lui Baudot a devenit în cele din urmă cel mai apropiat lucru de un standard în codificarea teleimprimantelor și a fost adoptată de majoritatea producătorilor. Designul hardware original al lui Baudot avea doar cinci taste, asemănătoare cu tastele pianului. Operatorului i sa cerut să învețe o anumită combinație de taste pentru fiecare literă. În cele din urmă, sistemul de codificare Baudot a fost cuplat la un aspect tradițional de tastatură.

Pentru a marca acest progres, mașinile au fost numite telemașinători. Acesta a fost scurtat la teletipuri și în cele din urmă la TTY-uri. Deci de aici obținem acronim TTY de la, dar ce legătură are telegrafia cu computerul?

ASCII și Telex

Când ASCII a sosit în 1963, a fost adoptat de producătorii de teletipuri. În ciuda invenției și a utilizării pe scară largă a telefonului, teletipurile erau încă puternice.

Telex era o rețea mondială de teletipuri care permitea trimiterea mesajelor scrise pe tot globul. Ele au fost principalele mijloace de transmitere a mesajelor scrise în perioada de după cel de-al Doilea Război Mondial până în boom aparat de fax a anilor 1980.

  7 alternative excelente de aplicații Linux pentru aplicațiile Windows

Calculatoarele au evoluat și ele. Deveneau capabili să interacționeze cu utilizatorii în timp real și să sprijine mai mulți utilizatori. Vechea metodă de lucru în lot a devenit insuficientă. Oamenii nu au vrut să aștepte 24 de ore sau mai mult pentru rezultatele lor. A face teancuri de cărți perforate și a aștepta rezultate peste noapte nu mai era acceptabilă.

Oamenii aveau nevoie de un dispozitiv care să le permită să introducă instrucțiuni și să primească rezultate trimise înapoi. Oamenii doreau eficiență.

Teletipul reutilizat

Teletipul a fost candidatul perfect ca dispozitiv de intrare/ieșire. La urma urmei, a fost un dispozitiv conceput pentru a permite mesajele să fie tastate, codificate, trimise, primite, decodate și tipărite.

Ce i-a pasat teletipului dacă dispozitivul de la celălalt capăt al conexiunii nu era un alt teletip? Atâta timp cât vorbea aceeași limbă de codificare și putea primi mesaje și trimite mesaje înapoi, teletipul a fost fericit.

Și, desigur, a folosit o tastatură mai mult sau mai puțin standard.

Teletipuri emulate hardware

Teletipurile au devenit mijloacele implicite de interacțiune cu mini computerele mari și mainframe din acea epocă.

Ele au fost în cele din urmă înlocuite cu dispozitive care au emulat acele mașini electro-mecanice folosind electronice. Acestea aveau Tuburi cu raze catodice (CRT) în loc de role de hârtie. Nu s-au scuturat când au furnizat răspunsuri de la computer. Acestea permiteau funcționalități imposibile până acum, cum ar fi deplasarea cursorului în jurul ecranului, ștergerea ecranului, textul îngroșat și așa mai departe.

The DEC VT05 a fost un exemplu timpuriu de teletip virtual și un strămoș al celebrului DEC VT100. Au fost vândute milioane de DEC VT100.

Teletipuri emulate prin software

În mediul desktop Linux și alte sisteme de operare asemănătoare Unix, cum ar fi macOS, fereastra terminalului și aplicații precum x-term și Konsole sunt exemple de teletipuri virtuale. Dar acestea sunt emulate în întregime în software. Se numesc pseudo-teletipuri. Acesta a fost scurtat la PTS.

  6 Utilitar Linux pentru a testa conexiunea la rețea

Și aici intervine tty.

Ce ne poate spune tty?

În Linux, există un multiplexor de pseudo-teletip care se ocupă de conexiunile de la toate pseudo-teletipurile (PTS) ale ferestrei terminalului. Multiplexorul este maestru, iar PTS sunt sclavii. Multiplexorul este adresat de nucleu prin fișierul dispozitivului situat la /dev/ptmx.

Comanda tty va tipări numele fișierului dispozitivului pe care slavul pseudo-teletip îl folosește pentru a interfața cu masterul. Și acesta, efectiv, este numărul ferestrei terminalului.

Să vedem ce rapoarte tty pentru fereastra terminalului nostru:

tty

Răspunsul arată că suntem conectați la fișierul dispozitivului la /dev/pts/0.

Fereastra terminalului nostru, care este o emulare software a unui teletip (TTY), este interfațată cu multiplexorul pseudo-teletip ca pseudo-teletip (PTS). Și se întâmplă să fie numărul zero.

Opțiunea Silențioasă

Opțiunea -s (silențios) face ca tty să nu genereze nicio ieșire.

tty -s

Acesta produce o valoare de ieșire, totuși:

0: dacă intrarea standard provine de la un dispozitiv TTY, emulat sau fizic.
1: dacă intrarea standard nu provine de la un dispozitiv TTY.
2: Eroare de sintaxă, au fost utilizați parametri incorecți pentru linia de comandă.
3: A apărut o eroare de scriere.

Acest lucru este probabil cel mai util în scriptingul Bash. Dar, chiar și pe linia de comandă, putem demonstra cum să executați o comandă numai dacă rulați într-o fereastră de terminal (o sesiune TTY sau PTS).

tty -s && echo "In a tty"

tty -s && echo

Deoarece rulăm într-o sesiune TTY, codul nostru de ieșire este 0 și a doua comandă este executată.

Comandă cine

Alte comenzi vă pot dezvălui numărul TTY. Comanda who va lista informații pentru toți utilizatorii conectați, inclusiv pentru dvs.

Alec și Mary sunt conectați de la distanță la computerul Linux. Sunt conectate la PTS unu și doi.

Utilizatorul dave este afișat ca fiind conectat la „:0”.

Acesta reprezintă ecranul și tastatura conectate fizic la computer. Chiar dacă ecranul și tastatura sunt dispozitive hardware, ele sunt încă conectate la multiplexor printr-un fișier dispozitiv. tty dezvăluie că este /dev/pts/2.

who
tty

Accesarea unui TTY

Puteți accesa o sesiune TTY pe ecran complet ținând apăsate tastele Ctrl+Alt și apăsând una dintre tastele funcționale.

  Cele mai bune 6 aplicații de monitorizare a sistemului pentru Linux

Ctrl+Alt+F3 va afișa promptul de conectare al tty3.

Dacă vă conectați și lansați comanda tty, veți vedea că sunteți conectat la /dev/tty3.

Acesta nu este un pseudo-teletip (emulat în software); este un teletip virtual (emulat în hardware). Folosește ecranul și tastatura conectate la computer, pentru a emula un teletype virtual, cum o făcea DEC VT100.

Puteți utiliza tastele funcționale Ctrl+Alt cu tastele funcționale F3 până la F6 și aveți patru sesiuni TTY deschise dacă doriți. De exemplu, ați putea fi conectat la tty3 și apăsați Ctrl+Alt+F6 pentru a merge la tty6.

Pentru a reveni la mediul desktop grafic, apăsați Ctrl+Alt+F2.

Dacă apăsați Ctrl+Alt+F1, veți reveni la promptul de conectare al sesiunii de desktop grafic.

La un moment dat, Ctrl+Alt+F1 până la Ctrl+Alt+F6 ar deschide consolele TTY pe ecran complet, iar Ctrl+Alt+F7 te-ar întoarce la mediul desktop grafic. Dacă rulați o distribuție Linux mai veche, acesta ar putea fi modul în care se comportă sistemul dumneavoastră.

Acest lucru a fost testat pe versiunile actuale ale Manjaro, Ubuntu și Fedora și toate s-au comportat astfel:

Ctrl+Alt+F1: Vă întoarce la ecranul de conectare al mediului grafic de desktop.
Ctrl+Alt+F2: Vă întoarce la mediul desktop grafic.
Ctrl+Alt+F3: Deschide TTY 3.
Ctrl+Alt+F4: Deschide TTY 4.
Ctrl+Alt+F5: Deschide TTY 5.
Ctrl+Alt+F6: Deschide TTY 6.

Având acces la aceste console pe ecran complet, persoanele care folosesc numai instalări de linie de comandă ale Linux – și multe servere Linux sunt configurate în acest fel – să aibă mai multe console disponibile.

Ați lucrat vreodată la o mașină Linux cu un mediu desktop grafic și a avut ceva care v-a cauzat înghețarea sesiunii? Acum puteți sări la una dintre sesiunile de consolă TTY, astfel încât să puteți încerca să remediați situația.

Puteți folosi top și ps pentru a încerca să identificați aplicația eșuată, apoi utilizați kill pentru a o închide sau pur și simplu utilizați shutdown pentru a încerca să închideți cât de grațios vă permite starea computerului.

Trei scrisori mici cu multă istorie

Comanda tty își ia numele de la un dispozitiv de la sfârșitul anilor 1800, a apărut în Unix în 1971 și face parte din sistemele de operare Linux și Unix-like până astăzi.

Micuțul are o poveste în spate.