Vad är en TTY på Linux? (och hur man använder kommandot tty)

Vad gör kommandot tty? Den skriver ut namnet på terminalen du använder. TTY står för ”teletypewriter”. Vad är historien bakom namnet på kommandot? Det kräver lite mer förklaring.

Teleprinters Från 1800-talet

På 1830- och 1840-talen, maskiner kända som teleprinters utvecklades. Dessa maskiner kunde skicka maskinskrivna meddelanden ”nedåt” till avlägsna platser. Meddelanden skrevs av avsändaren på ett slags tangentbord. De trycktes på papper i mottagarsidan. De var ett evolutionärt steg in telegrafi, som tidigare åberopat Morse och liknande koder.

Meddelanden kodades och sändes, togs sedan emot, avkodades och skrevs ut. Det fanns flera tekniker som användes för att koda och avkoda meddelanden. Den mest kända, och en av de mest produktiva, patenterades 1874 av Emile Baudot, för vem baudhastighet heter. Hans teckenkodningsschema var fördaterat ASCII med 89 år.

Baudots kodning blev så småningom det som låg närmast en standard inom teleprinter-kodning, och den antogs av de flesta tillverkare. Baudots ursprungliga hårdvarudesign hade bara fem tangenter, liknande pianotangenter. Operatören var tvungen att lära sig en speciell tangentkombination för varje bokstav. Så småningom kopplades Baudot-kodningssystemet till en traditionell tangentbordslayout.

För att markera detta framsteg döptes maskinerna till teleskrivmaskiner. Detta förkortades till teletyper och så småningom till TTY. Så det är där vi får det akronym TTY från, men vad har telegrafi med datoranvändning att göra?

ASCII och Telex

När ASCII kom 1963 antogs den av teletyptillverkarna. Trots uppfinningen och den utbredda användningen av telefonen var teletyper fortfarande stark.

Telex var ett världsomspännande nätverk av teletyper som gjorde att skrivna meddelanden kunde skickas runt om i världen. De var det huvudsakliga sättet att överföra skriftliga meddelanden under perioden efter andra världskriget fram till faxmaskin bom av 1980-talet.

Datorer utvecklades också. De blev kapabla att interagera med användare i realtid och stödja flera användare. Det gamla satsvisa arbetssättet blev otillräckligt. Folk ville inte vänta 24 timmar eller längre på sina resultat. Att göra högar med hålkort och vänta över natten på resultat var inte längre acceptabelt.

Människor behövde en enhet som skulle tillåta dem att ange instruktioner och få resultat skickade tillbaka till dem. Folk ville ha effektivitet.

Teletypen återanvänds

Teletypen var den perfekta kandidaten som in-/utgångsenhet. Det var trots allt en enhet designad för att tillåta meddelanden att skrivas, kodas, skickas, tas emot, avkodas och skrivas ut.

Vad brydde sig teletypen om om enheten i andra änden av anslutningen inte var en annan teletyp? Så länge den talade samma kodningsspråk och kunde ta emot meddelanden och skicka meddelanden tillbaka, var teletypen glad.

Och naturligtvis använde den ett mer eller mindre standardtangentbord.

Hårdvaruemulerade teletyper

Teletyper blev standardmetoden för att interagera med den tidens stora mini- och stordatorer.

De ersattes så småningom av enheter som emulerade de elektromekaniska maskiner som använder elektronik. Dessa hade Katodstrålerör (CRT) istället för pappersrullar. De skakade inte när de levererade svar från datorn. De tillät hittills omöjlig funktionalitet, som att flytta markören runt skärmen, rensa skärmen, feta text och så vidare.

De DEC VT05 var ett tidigt exempel på en virtuell teletyp, och en förfader till de berömda DEC VT100. Miljontals DEC VT100 såldes.

Programvaruemulerade teletyper

I skrivbordsmiljön för Linux och andra Unix-liknande operativsystem som macOS, terminalfönstret och applikationer som t.ex. x-term och Konsole är exempel på virtuella teletyper. Men dessa emuleras helt i mjukvara. De kallas pseudo-teletyper. Detta förkortades till PTS.

Och det är där tty kommer in.

Vad kan du berätta för oss?

I Linux finns det en pseudo-teletyp-multiplexor som hanterar anslutningarna från alla terminalfönster-pseudo-teletyper (PTS). Multiplexorn är mastern och PTS är slavarna. Multiplexorn adresseras av kärnan genom enhetsfilen som finns på /dev/ptmx.

Kommandot tty kommer att skriva ut namnet på enhetsfilen som din pseudo-teletypslav använder för att ansluta till mastern. Och det är faktiskt numret på ditt terminalfönster.

Låt oss se vad tty rapporterar för vårt terminalfönster:

tty

Svaret visar att vi är anslutna till enhetsfilen på /dev/pts/0.

Vårt terminalfönster, som är en mjukvaruemulering av en teletyp (TTY), är ansluten till pseudo-teletyp multiplexorn som en pseudo-teletyp (PTS). Och det råkar vara nummer noll.

Det tysta alternativet

Alternativet -s (tyst) gör att tty inte genererar någon utdata.

tty -s

Det producerar dock ett exitvärde:

0: om standardingången kommer från en TTY-enhet, emulerad eller fysisk.
1: om standardingången inte kommer från en TTY-enhet.
2: Syntaxfel, felaktiga kommandoradsparametrar användes.
3: Ett skrivfel har inträffat.

Detta kommer troligen att vara mest användbart i Bash-skript. Men även på kommandoraden kan vi visa hur man får ett kommando exekverat endast om du kör i ett terminalfönster (en TTY- eller en PTS-session).

tty -s && echo "In a tty"

tty -s && eko

Eftersom vi kör i en TTY-session är vår utgångskod 0 och det andra kommandot exekveras.

Vem befaller

Andra kommandon kan avslöja ditt TTY-nummer. Who-kommandot kommer att lista information för alla inloggade användare, inklusive dig själv.

Alec och Mary är fjärranslutna till Linux-datorn. De är kopplade till PTS ett och två.

Användaren dave visas som ansluten till ”:0”.

Detta representerar skärmen och tangentbordet som är fysiskt anslutna till datorn. Även om skärmen och tangentbordet är hårdvaruenheter är de fortfarande anslutna till multiplexorn via en enhetsfil. tty avslöjar att det är /dev/pts/2.

who
tty

Få åtkomst till en TTY

Du kan komma åt en helskärms-TTY-session genom att hålla ned Ctrl+Alt-tangenterna och trycka på en av funktionstangenterna.

Ctrl+Alt+F3 kommer att visa inloggningsprompten för tty3.

Om du loggar in och utfärdar kommandot tty ser du att du är ansluten till /dev/tty3.

Detta är inte en pseudo-teletyp (emulerad i programvara); det är en virtuell teletyp (emulerad i hårdvara). Den använder skärmen och tangentbordet anslutna till din dator för att emulera en virtuell teletyp som DEC VT100 brukade göra.

Du kan använda funktionstangenterna Ctrl+Alt med funktionstangenterna F3 till F6 och ha fyra TTY-sessioner öppna om du vill. Du kan till exempel vara inloggad på tty3 och trycka på Ctrl+Alt+F6 för att gå till tty6.

För att komma tillbaka till din grafiska skrivbordsmiljö, tryck på Ctrl+Alt+F2.

Genom att trycka på Ctrl+Alt+F1 återgår du till inloggningsprompten för din grafiska skrivbordssession.

Vid ett tillfälle skulle Ctrl+Alt+F1 till Ctrl+Alt+F6 öppna TTY-konsolerna i helskärm och Ctrl+Alt+F7 skulle återvända till din grafiska skrivbordsmiljö. Om du kör en äldre Linux-distribution kan det vara så ditt system beter sig.

Detta testades på nuvarande versioner av Manjaro, Ubuntu och Fedora och de betedde sig alla så här:

Ctrl+Alt+F1: Återgår till den grafiska inloggningsskärmen för skrivbordsmiljön.
Ctrl+Alt+F2: Återgår till den grafiska skrivbordsmiljön.
Ctrl+Alt+F3: Öppnar TTY 3.
Ctrl+Alt+F4: Öppnar TTY 4.
Ctrl+Alt+F5: Öppnar TTY 5.
Ctrl+Alt+F6: Öppnar TTY 6.

Att ha tillgång till dessa helskärmskonsoler gör det möjligt för personer som endast använder kommandoradsinstallationer av Linux – och många Linux-servrar är konfigurerade på detta sätt – att ha flera konsoler tillgängliga.

Har du någonsin arbetat på en Linux-maskin med en grafisk skrivbordsmiljö och haft något som orsakat din session att frysa? Nu kan du hoppa över till en av TTY-konsolsessionerna så att du kan försöka rätta till situationen.

Du kan använda top och ps för att försöka identifiera den misslyckade applikationen, använd sedan kill för att avsluta den, eller använd bara shutdown för att försöka stänga ner så graciöst som datorns tillstånd tillåter.

Tre små bokstäver med mycket historia

Kommandot tty har fått sitt namn från en enhet från slutet av 1800-talet, som dök upp i Unix 1971 och är en del av Linux och Unix-liknande operativsystem än i dag.

Den lilla killen har en hel berättelse bakom sig.