Hva er en TTY på Linux? (og hvordan du bruker tty-kommandoen)

Hva gjør tty-kommandoen? Den skriver ut navnet på terminalen du bruker. TTY står for «teletypewriter». Hva er historien bak navnet på kommandoen? Det krever litt mer forklaring.

Teleprintere fra 1800-tallet

På 1830- og 1840-tallet ble maskiner kjent som fjernskrivere ble utviklet. Disse maskinene kunne sende maskinskrevne meldinger «nedover ledningen» til fjerne steder. Meldingene ble skrevet av avsenderen på et slags tastatur. De ble trykket på papir i mottakerenden. De var et evolusjonært skritt inn telegrafisom tidligere hadde støttet seg på Morse og lignende koder.

Meldinger ble kodet og overført, deretter mottatt, dekodet og skrevet ut. Det var flere teknikker som ble brukt for å kode og dekode meldingene. Den mest kjente, og en av de mest produktive, ble patentert i 1874 av Émile Baudotfor hvem baud rate heter. Karakterkodingsskjemaet hans er utdatert ASCII med 89 år.

Baudots koding ble til slutt det som var nærmest en standard innen fjernskriverkoding, og den ble tatt i bruk av de fleste produsenter. Baudots originale maskinvaredesign hadde bare fem tangenter, lik pianotangenter. Operatøren ble pålagt å lære en bestemt tastekombinasjon for hver bokstav. Etter hvert ble Baudot-kodingssystemet koblet til et tradisjonelt tastaturoppsett.

For å markere det fremskrittet ble maskinene kalt fjernskrivere. Dette ble forkortet til teletyper og til slutt til TTY-er. Så det er der vi får det akronym TTY fra, men hva har telegrafi med data å gjøre?

ASCII og Telex

Da ASCII ankom i 1963, ble den tatt i bruk av teletypeprodusentene. Til tross for oppfinnelsen og den utbredte bruken av telefonen, var teletyper fortsatt sterk.

Telex var et verdensomspennende nettverk av teletyper som gjorde det mulig å sende skriftlige meldinger rundt om i verden. De var det viktigste middelet for å overføre skriftlige meldinger i perioden etter andre verdenskrig frem til faksmaskin bom av 1980-tallet.

  Hvordan endre brukerdata med chfn og usermod på Linux

Datamaskiner var også i utvikling. De ble i stand til å samhandle med brukere i sanntid, og til å støtte flere brukere. Den gamle batch-metoden ble utilstrekkelig. Folk ønsket ikke å vente 24 timer eller lenger på resultatene. Å lage bunker med hullkort og vente over natten på resultater var ikke lenger akseptabelt.

Folk trengte en enhet som ville tillate dem å legge inn instruksjoner og få resultater sendt tilbake til dem. Folk ønsket effektivitet.

Teletypen gjenbrukt

Teletypen var den perfekte kandidaten som input/output-enhet. Det var tross alt en enhet designet for å tillate at meldinger kan skrives, kodes, sendes, mottas, dekodes og skrives ut.

Hva brydde teletypen seg om enheten i den andre enden av forbindelsen ikke var en annen teletype? Så lenge den snakket samme kodespråk og kunne motta meldinger og sende meldinger tilbake, var teletypen fornøyd.

Og selvfølgelig brukte den et mer eller mindre standard tastatur.

Maskinvareemulerte teletyper

Teletyper ble standardmetoden for å samhandle med de store mini- og stormaskinene fra den tiden.

De ble til slutt erstattet av enheter som emulerte de elektromekaniske maskinene som brukte elektronikk. Disse hadde Katodestrålerør (CRT-er) i stedet for papirruller. De ristet ikke når de leverte svar fra datamaskinen. De tillot hittil umulig funksjonalitet, som å flytte markøren rundt på skjermen, tømme skjermen, fet tekst og så videre.

De DEC VT05 var et tidlig eksempel på en virtuell teletype, og en stamfar til den berømte DEC VT100. Millioner av DEC VT100-er ble solgt.

Programvareemulerte teletyper

I skrivebordsmiljøet til Linux og andre Unix-lignende operativsystemer som macOS, terminalvinduet og applikasjoner som f.eks. x-termin og Konsole er eksempler på virtuelle teletyper. Men disse emuleres helt i programvare. De kalles pseudo-teletyper. Dette ble forkortet til PTS.

Og det er der tty kommer inn.

Hva kan du fortelle oss?

I Linux er det en pseudo-teletype-multiplekser som håndterer forbindelsene fra alle terminalvinduets pseudo-teletyper (PTS). Multiplekseren er masteren, og PTS er slavene. Multiplekseren adresseres av kjernen gjennom enhetsfilen som ligger på /dev/ptmx.

  Hvordan spille BioShock Remastered på Linux

tty-kommandoen vil skrive ut navnet på enhetsfilen som pseudo-teletype-slaven din bruker for å koble til masteren. Og det er faktisk nummeret på terminalvinduet ditt.

La oss se hva tty rapporterer for terminalvinduet vårt:

tty

Svaret viser at vi er koblet til enhetsfilen på /dev/pts/0.

Terminalvinduet vårt, som er en programvareemulering av en teletype (TTY), er koblet til pseudo-teletype-multiplekseren som en pseudo-teletype (PTS). Og det tilfeldigvis er nummer null.

Det stille alternativet

Alternativet -s (stille) gjør at tty ikke genererer noen utgang.

tty -s

Det produserer imidlertid en utgangsverdi:

0: hvis standardinndata kommer fra en TTY-enhet, emulert eller fysisk.
1: hvis standardinngangen ikke kommer fra en TTY-enhet.
2: Syntaksfeil, feil kommandolinjeparametere ble brukt.
3: Det har oppstått en skrivefeil.

Dette vil sannsynligvis være mest nyttig i Bash-skripting. Men selv på kommandolinjen kan vi demonstrere hvordan en kommando utføres bare hvis du kjører i et terminalvindu (en TTY- eller en PTS-sesjon).

tty -s && echo "In a tty"

tty -s && ekko

Fordi vi kjører i en TTY-økt, er utgangskoden vår 0, og den andre kommandoen utføres.

Hvem befaler

Andre kommandoer kan avsløre TTY-nummeret ditt. Who-kommandoen vil vise informasjon for alle påloggede brukere, inkludert deg selv.

Alec og Mary er eksternt koblet til Linux-datamaskinen. De er koblet til PTS en og to.

Bruker dave vises som koblet til «:0».

Dette representerer skjermen og tastaturet som er fysisk koblet til datamaskinen. Selv om skjermen og tastaturet er maskinvareenheter, er de fortsatt koblet til multiplekseren via en enhetsfil. tty avslører at det er /dev/pts/2.

who
tty

Få tilgang til en TTY

Du kan få tilgang til en TTY-økt i full skjerm ved å holde nede Ctrl+Alt-tastene og trykke på en av funksjonstastene.

Ctrl+Alt+F3 vil få opp påloggingsforespørselen til tty3.

Hvis du logger på og utsteder tty-kommandoen, vil du se at du er koblet til /dev/tty3.

  Hvordan installere og bruke KDE Apper på Linux

Dette er ikke en pseudo-teletype (emulert i programvare); det er en virtuell teletype (emulert i maskinvare). Den bruker skjermen og tastaturet som er koblet til datamaskinen din, for å emulere en virtuell teletype som DEC VT100 pleide å gjøre.

Du kan bruke funksjonstastene Ctrl+Alt med funksjonstastene F3 til F6 og ha fire TTY-økter åpne hvis du velger det. Du kan for eksempel være logget på tty3 og trykke Ctrl+Alt+F6 for å gå til tty6.

For å komme tilbake til det grafiske skrivebordsmiljøet, trykk Ctrl+Alt+F2.

Ved å trykke Ctrl+Alt+F1 vil du gå tilbake til påloggingsmeldingen for den grafiske skrivebordsøkten.

På en gang ville Ctrl+Alt+F1 til Ctrl+Alt+F6 åpne TTY-konsollene i full skjerm, og Ctrl+Alt+F7 ville returnere deg til ditt grafiske skrivebordsmiljø. Hvis du kjører en eldre Linux-distribusjon, kan dette være hvordan systemet ditt oppfører seg.

Dette ble testet på gjeldende utgivelser av Manjaro, Ubuntu og Fedora, og de oppførte seg alle slik:

Ctrl+Alt+F1: Går tilbake til den grafiske påloggingsskjermen for skrivebordsmiljøet.
Ctrl+Alt+F2: Returnerer deg til det grafiske skrivebordsmiljøet.
Ctrl+Alt+F3: Åpner TTY 3.
Ctrl+Alt+F4: Åpner TTY 4.
Ctrl+Alt+F5: Åpner TTY 5.
Ctrl+Alt+F6: Åpner TTY 6.

Å ha tilgang til disse fullskjermskonsollene gjør at folk som bruker kommandolinjeinstallasjoner av Linux – og mange Linux-servere er konfigurert på denne måten – kan ha flere konsoller tilgjengelig.

Har du noen gang jobbet på en Linux-maskin med et grafisk skrivebordsmiljø og hatt noe som fikk økten til å fryse? Nå kan du hoppe over til en av TTY-konsolløktene slik at du kan prøve å rette opp situasjonen.

Du kan bruke topp og ps for å prøve å identifisere det mislykkede programmet, og deretter bruke kill for å avslutte det, eller bare bruke shutdown for å prøve å lukke ned så elegant som datamaskinens tilstand tillater.

Tre små bokstaver med mye historie

tty-kommandoen har fått navnet sitt fra en enhet fra slutten av 1800-tallet, dukket opp i Unix i 1971, og er en del av Linux og Unix-lignende operativsystemer den dag i dag.

Den lille karen har en god historie bak seg.