Co je TTY v Linuxu? (a jak používat příkaz tty)

K čemu slouží příkaz `tty`? Zobrazuje jméno terminálu, který právě používáte. Zkratka TTY pochází z anglického „teletypewriter“, což znamená dálnopis. Jaký je však příběh tohoto příkazu? To si vyžaduje trochu širší kontext.

Historie dálnopisů sahá až do 19. století

Již ve 30. a 40. letech 19. století byly vynalezeny stroje zvané dálnopisy. Tato zařízení umožňovala přenášet psané zprávy „po drátě“ do vzdálených míst. Odesílatel zadával text pomocí klávesnice, a zpráva se vytiskla na papír na přijímací straně. Byly to pokročilejší verze telegrafie, která dříve používala Morseovu abecedu a jí podobné kódy.

Zprávy byly zakódovány a odeslány, poté přijaty, dekódovány a vytištěny. Pro kódování a dekódování se používaly různé metody. Jednou z nejvýznamnějších a nejrozšířenějších byla technika patentovaná v roce 1874 Émilem Baudotem, po němž je pojmenována přenosová rychlost. Jeho kódovací schéma předcházelo standardu ASCII o celých 89 let.

Baudotův kód se stal standardem pro kódování dálnopisných zpráv a přijala ho většina výrobců. Původní Baudotův návrh hardwaru měl pouze pět kláves, podobných klávesám klavíru. Operátor se musel naučit specifické kombinace kláves pro každé písmeno. Později byl Baudotův systém spojen s tradičním rozložením klávesnice.

Tyto stroje, které představovaly technologický pokrok, začaly být označovány jako „teletypewriters“, což se zkrátilo na „teletypes“ a nakonec na TTY. Tady se dostáváme k původu akronymu TTY. Ale co má telegrafie společného s počítači?

ASCII a Telex

V roce 1963, s příchodem ASCII, jej přijali i výrobci dálnopisů. Navzdory vynálezu a rozšíření telefonů, dálnopisy si stále držely svou pozici.

Telex byla celosvětová síť dálnopisů, která umožňovala zasílání psaných zpráv po celém světě. V období po druhé světové válce až do rozšíření faxových přístrojů v 80. letech 20. století, byly dálnopisy hlavním způsobem přenosu písemných informací.

Současně se vyvíjely i počítače. Začínaly komunikovat s uživateli v reálném čase a podporovat více uživatelů. Starý dávkový způsob zpracování dat se stal neefektivní. Lidé nechtěli čekat na výsledky 24 hodin i déle. Dělat hromady děrných štítků a čekat přes noc na výstupy již nebylo přijatelné.

Lidé potřebovali zařízení, které by jim umožnilo zadávat pokyny a okamžitě dostávat výsledky. Chtěli efektivitu.

Nové využití dálnopisů

Dálnopis se ukázal jako ideální kandidát pro vstupní a výstupní zařízení. Byl to koneckonců stroj navržený pro psaní, kódování, odesílání, přijímání, dekódování a tisk zpráv.

Dálnopisu nezáleželo na tom, jestli je na druhém konci spojení jiný dálnopis. Dokud uměl stejný kódovací jazyk a dokázal přijímat a odesílat zprávy, byl s tím spokojený.

A navíc používal víceméně standardní rozložení klávesnice.

Hardwarová emulace dálnopisů

Dálnopisy se staly standardním prostředkem pro komunikaci s velkými mini a sálovými počítači tehdejší doby.

Později byly nahrazeny elektronickými zařízeními, které tyto elektromechanické stroje emulovaly. Místo papírových rolí měly obrazovky s katodovými trubicemi (CRT). Při zobrazování odpovědí z počítače už netiskly na papír. Umožňovaly funkce, které dříve nebyly možné, jako je pohyb kurzoru po obrazovce, mazání obrazovky, tučné písmo a další.

DEC VT05 byl jedním z prvních příkladů virtuálního dálnopisu a předchůdcem známých DEC VT100, kterých se prodaly miliony kusů.

Softwarová emulace dálnopisů

V desktopovém prostředí Linuxu a dalších unixových operačních systémů, jako je macOS, jsou terminálová okna a aplikace jako xterm a Konsole příklady softwarově emulovaných virtuálních dálnopisů. Říká se jim pseudoteletypes, zkráceně PTS.

A tady do hry vstupuje `tty`.

Co nám může `tty` sdělit?

V Linuxu existuje multiplexor pseudoteletypů, který spravuje připojení ze všech oken terminálů (PTS). Multiplexor je hlavní a PTS jsou podřízené. Multiplexor je jádrem adresován skrze soubor zařízení umístěný v `/dev/ptmx`.

Příkaz `tty` vypíše název souboru zařízení, který váš pseudodálnopis používá pro připojení k hlavnímu zařízení. Je to v podstatě číslo vašeho terminálového okna.

Podívejme se, co `tty` vypíše pro naše terminálové okno:

tty

Odpověď ukazuje, že jsme připojeni k souboru zařízení v `/dev/pts/0`.

Naše terminálové okno, které je softwarovou emulací dálnopisu (TTY), je spojeno s multiplexorem pseudodálnopisů jako pseudodálnopis (PTS). A v tomto případě má číslo nula.

Tichá volba

Volba `-s` (silent – tichá) způsobí, že `tty` nevytvoří žádný výstup.

tty -s

Vytvoří však návratovou hodnotu:

  • 0: Pokud standardní vstup pochází ze zařízení TTY, ať už emulovaného nebo fyzického.
  • 1: Pokud standardní vstup nepochází ze zařízení TTY.
  • 2: Pokud došlo k chybě syntaxe, byly použity nesprávné parametry příkazového řádku.
  • 3: Pokud nastala chyba zápisu.

To se nejvíce hodí při skriptování v Bash. Ale i v příkazovém řádku si můžeme ukázat, jak spustit příkaz pouze pokud běžíte v okně terminálu (relaci TTY nebo PTS).

tty -s && echo "In a tty"

Protože běžíme v relaci TTY, výstupní kód je 0 a druhý příkaz se provede.

Kdo velí?

Další příkazy nám mohou odhalit vaše TTY číslo. Příkaz `who` vypíše informace o všech přihlášených uživatelích, včetně vás.

Alec a Mary jsou vzdáleně připojeni k počítači se systémem Linux. Jsou připojeni k PTS jedna a dvě.

Uživatel dave je zobrazen jako připojený k „:0“.

To reprezentuje obrazovku a klávesnici fyzicky připojené k počítači. I když jsou obrazovka a klávesnice hardwarová zařízení, jsou stále připojeny k multiplexoru prostřednictvím souboru zařízení. `tty` ukazuje, že jde o `/dev/pts/2`.

who
tty

Přístup k TTY

K relaci TTY na celou obrazovku se dostanete podržením kláves Ctrl+Alt a stisknutím jedné z funkčních kláves.

Ctrl+Alt+F3 vyvolá výzvu k přihlášení tty3.

Pokud se přihlásíte a zadáte příkaz `tty`, uvidíte, že jste připojeni k `/dev/tty3`.

Toto není pseudodálnopis (emulovaný v softwaru); je to virtuální dálnopis (emulovaný v hardwaru). Používá obrazovku a klávesnici připojenou k vašemu počítači k emulaci virtuálního dálnopisu, podobně jako to dělal DEC VT100.

Můžete používat funkční klávesy Ctrl+Alt s funkčními klávesami F3 až F6 a mít otevřené čtyři relace TTY. Můžete být například přihlášeni v tty3 a stisknutím Ctrl+Alt+F6 přejít na tty6.

Pro návrat do grafického desktopového prostředí stiskněte Ctrl+Alt+F2.

Stisknutím Ctrl+Alt+F1 se vrátíte na přihlašovací obrazovku vaší grafické relace.

Dříve, Ctrl+Alt+F1 až Ctrl+Alt+F6 otevíraly konzole TTY na celou obrazovku a Ctrl+Alt+F7 vás vracelo do grafického prostředí. Pokud používáte starší distribuci Linuxu, může se váš systém takto chovat.

Toto bylo testováno na aktuálních verzích Manjaro, Ubuntu a Fedora a všechny se chovaly následovně:

  • Ctrl+Alt+F1: Vrátí vás na přihlašovací obrazovku grafického prostředí.
  • Ctrl+Alt+F2: Vrátí vás do grafického prostředí pracovní plochy.
  • Ctrl+Alt+F3: Otevře TTY 3.
  • Ctrl+Alt+F4: Otevře TTY 4.
  • Ctrl+Alt+F5: Otevře TTY 5.
  • Ctrl+Alt+F6: Otevře TTY 6.

Přístup k těmto celoobrazovkovým konzolím umožňuje uživatelům, kteří používají Linux pouze v příkazovém řádku (a mnoho linuxových serverů je takto nakonfigurováno), mít k dispozici více konzolí.

Stalo se vám někdy, že jste pracovali na linuxovém stroji s grafickým desktopovým prostředím a něco způsobilo zamrznutí vaší relace? Nyní můžete přejít do jedné z relací konzole TTY, abyste se pokusili situaci napravit.

Můžete použít příkazy `top` a `ps`, abyste identifikovali nefungující aplikaci, a pak ji pomocí příkazu `kill` ukončit, nebo jednoduše použít `shutdown` a pokusit se ukončit systém, jak elegantně vám to jeho stav dovolí.

Tři malá písmena s bohatou historií

Příkaz `tty` získal svůj název podle zařízení z konce 19. století. Objevil se v Unixu v roce 1971 a dodnes je součástí Linuxu a operačních systémů podobných Unixu.

I tak malý příkaz skrývá bohatou historii.