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

Ce rol îndeplinește comanda tty? Aceasta afișează denumirea terminalului pe care îl utilizați în prezent. TTY, prescurtare de la „teletypewriter” (teleimprimator), are o istorie fascinantă în spate, ce merită explorată.

Istoria Teleimprimatoarelor din Secolul al XIX-lea

În deceniile 1830 și 1840, au fost create mașini denumite teleimprimatoare. Aceste dispozitive aveau capacitatea de a transmite mesaje text la distanță. Expeditorul introducea mesajul pe o tastatură, iar la destinație, acesta era imprimat pe hârtie. Teleimprimatoarele au reprezentat un progres major în domeniul telegrafiei, care inițial se baza pe coduri precum Morse.

Mesajele erau codificate, transmise, recepționate, decodificate și apoi tipărite. De-a lungul timpului, au fost folosite diverse tehnici de codificare și decodificare. Una dintre cele mai cunoscute a fost brevetată în 1874 de Émile Baudot, cel care a dat numele ratei baud. Sistemul său de codificare a caracterelor a precedat ASCII cu 89 de ani.

Codificarea lui Baudot a devenit un standard de facto în comunicațiile prin teleimprimator, fiind adoptată de majoritatea producătorilor. Designul original al lui Baudot includea doar cinci taste, similare cu clapele unui pian. Operatorul trebuia să învețe combinațiile de taste corespunzătoare fiecărei litere. Ulterior, sistemul de codificare Baudot a fost integrat într-un format de tastatură convențional.

Ca o recunoaștere a acestui progres, mașinile au fost numite inițial „teletypewriters”, prescurtat la „teletypes”, și în final, la TTY-uri. De aici provine acronimul TTY. Dar ce legătură are telegrafia cu calculatoarele moderne?

ASCII și Rețeaua Telex

Odată cu apariția codului ASCII în 1963, acesta a fost adoptat și de producătorii de teleimprimatoare. Chiar și după invenția și utilizarea pe scară largă a telefonului, teleimprimatoarele au continuat să aibă o importanță semnificativă.

Telex era o rețea globală de teleimprimatoare, care permitea transmiterea de mesaje scrise în întreaga lume. Acestea au fost principala metodă de comunicare scrisă de la sfârșitul celui de-Al Doilea Război Mondial până la apariția faxului în anii 1980.

Calculatoarele au evoluat și ele, devenind capabile să interacționeze cu utilizatorii în timp real și să gestioneze mai mulți utilizatori simultan. Metoda tradițională de procesare în loturi nu mai era eficientă, iar utilizatorii nu mai doreau să aștepte 24 de ore sau mai mult pentru rezultate. Procesul de a pregăti seturi de cartele perforate și de a aștepta rezultatele peste noapte nu mai era acceptabil.

Oamenii aveau nevoie de un dispozitiv care să permită introducerea de comenzi și primirea imediată a rezultatelor, crescând eficiența generală.

Redescoperirea Teleimprimatoarelor

Teleimprimatorul s-a dovedit a fi soluția perfectă ca dispozitiv de intrare/ieșire. Era, la urma urmei, un dispozitiv conceput pentru a permite introducerea mesajelor, codificarea, transmiterea, recepționarea, decodificarea și tipărirea acestora.

Nu conta pentru un teleimprimator dacă dispozitivul de la celălalt capăt al conexiunii nu era tot un teleimprimator, atâta timp cât ambele foloseau același limbaj de codificare și puteau trimite și primi mesaje. Mai mult, teleimprimatoarele utilizau un format de tastatură mai mult sau mai puțin standard.

Emulatoare Hardware ale Teleimprimatoarelor

Teleimprimatoarele au devenit metoda principală de interacțiune cu minicalculatoarele și calculatoarele mainframe din acea perioadă.

Ulterior, ele au fost înlocuite cu dispozitive electronice care emulau funcționalitatea mașinilor electromecanice. Acestea utilizau tuburi catodice (CRT) în locul rolelor de hârtie. Noile dispozitive afișau rezultatele fără vibrațiile specifice teleimprimatoarelor și permiteau funcții noi, cum ar fi deplasarea cursorului, ștergerea ecranului sau afișarea textului îngroșat.

Modelul DEC VT05 este un exemplu timpuriu de teleimprimator virtual și un precursor al celebrului DEC VT100, dintre care au fost vândute milioane de unități.

Emulatoare Software ale Teleimprimatoarelor

În mediul desktop Linux și alte sisteme de operare asemănătoare Unix, precum macOS, ferestrele de terminal și aplicații precum x-term și Konsole sunt exemple de teleimprimatoare virtuale, emulate complet în software. Acestea sunt denumite pseudo-teleimprimatoare sau PTS.

Aici intervine comanda tty.

Ce ne poate spune comanda tty?

În Linux, există un multiplexor de pseudo-teleimprimatoare care gestionează conexiunile de la toate pseudo-teleimprimatoarele (PTS) din ferestrele de terminal. Multiplexorul este un master, iar PTS-urile sunt sclavii săi. Nucleul accesează multiplexorul prin intermediul fișierului dispozitiv situat în /dev/ptmx.

Comanda tty afișează numele fișierului dispozitiv pe care pseudo-teleimprimatorul îl utilizează pentru a comunica cu masterul. Acesta este, în esență, numărul ferestrei terminalului.

Să vedem ce afișează comanda tty pentru fereastra noastră de terminal:

tty

Rezultatul indică faptul că suntem conectați la fișierul dispozitiv din /dev/pts/0.

Fereastra noastră de terminal, care este o emulație software a unui teleimprimator (TTY), comunică cu multiplexorul pseudo-teleimprimator ca pseudo-teleimprimator (PTS). Și se întâmplă să fie numărul zero.

Opțiunea Silențioasă

Opțiunea -s (silențios) face ca tty să nu afișeze nimic.

tty -s

Totuși, această comandă returnează o valoare de ieșire:

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.
3: A apărut o eroare de scriere.

Acest lucru este deosebit de util în scripting-ul Bash. Chiar și direct în linia de comandă, putem demonstra cum să executăm o comandă doar dacă ne aflăm într-o fereastră de terminal (sesiune TTY sau PTS).

tty -s && echo "In a tty"

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

Comanda who

Alte comenzi pot dezvălui numărul TTY. Comanda `who` afișează informații despre toți utilizatorii conectați, inclusiv despre dumneavoastră.

În exemplul de mai jos, utilizatorii Alec și Mary sunt conectați la distanță la calculatorul Linux, prin intermediul PTS-urilor unu și doi.

Utilizatorul dave este conectat prin „:0”.

Acesta reprezintă ecranul și tastatura fizic conectate la calculator. Chiar dacă sunt dispozitive hardware, acestea comunică tot prin intermediul multiplexorului, folosind un fișier dispozitiv. Comanda tty dezvăluie că acesta 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.

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

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

Acesta nu este un pseudo-teleimprimator (emulat software), ci un teleimprimator virtual (emulat hardware). Folosește ecranul și tastatura conectate la computer pentru a simula un teleimprimator virtual, similar cu DEC VT100.

Puteți folosi tastele funcționale Ctrl+Alt cu tastele funcționale F3 până la F6 și puteți avea patru sesiuni TTY deschise simultan. De exemplu, ați putea fi autentificat în tty3 și apăsa Ctrl+Alt+F6 pentru a comuta 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 autentificare al sesiunii desktop-ului grafic.

În trecut, Ctrl+Alt+F1 până la Ctrl+Alt+F6 deschideau console TTY pe ecran complet, iar Ctrl+Alt+F7 vă aducea înapoi la mediul grafic. Dacă utilizați o distribuție Linux mai veche, este posibil ca sistemul dvs. să se comporte astfel.

Testele efectuate pe versiunile actuale de Manjaro, Ubuntu și Fedora au arătat următorul comportament:

Ctrl+Alt+F1: Vă aduce înapoi la ecranul de autentificare al mediului grafic de desktop.
Ctrl+Alt+F2: Vă aduce înapoi 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.

Prin accesul la aceste console pe ecran complet, utilizatorii de sisteme Linux care folosesc doar interfața de linie de comandă – și multe servere Linux sunt configurate astfel – au la dispoziție mai multe console.

Vi s-a întâmplat vreodată să lucrați la un calculator Linux cu un mediu desktop grafic și să aveți o sesiune blocată? Acum, puteți comuta la una dintre sesiunile de consolă TTY pentru a încerca să remediați problema.

Puteți utiliza comenzile `top` și `ps` pentru a identifica aplicația care a generat blocarea, apoi utilizați `kill` pentru a o închide, sau pur și simplu utilizați `shutdown` pentru a încerca o închidere controlată, în funcție de starea calculatorului.

Trei Litere Mici cu o Istorie Bogată

Comanda tty își trage numele de la un dispozitiv din anii 1800, a apărut în Unix în 1971 și continuă să fie parte integrantă din sistemele de operare Linux și Unix-like și în prezent.

Aceste trei litere mici ascund o poveste impresionantă.