Z dokumentace jádra Linuxu na Kernel.org:
/dev/tty Current TTY device
/dev/console System console
/dev/tty0 Current virtual console
Za starých dobrých časů /dev/console
byla konzole správce systému. A TTY byla sériová zařízení uživatelů připojená k serveru.
Nyní /dev/console
a /dev/tty0
představují aktuální zobrazení a obvykle jsou stejné. Můžete jej přepsat například přidáním console=ttyS0
až grub.conf
. Poté vaše /dev/tty0
je monitor a /dev/console
je /dev/ttyS0
.
Cvičení, které ukáže rozdíl mezi /dev/tty
a /dev/tty0
:
Přepněte na 2. konzoli stisknutím Ctrl +Alt +F2 . Přihlaste se jako root
. Zadejte sleep 5; echo tty0 > /dev/tty0
. Stiskněte Enter a přepněte na 3. konzoli stisknutím Alt +F3 .Nyní se přepněte zpět na 2. konzoli stisknutím Alt +F2 . Zadejte sleep 5; echo tty > /dev/tty
, stiskněte Enter a přepněte na 3. konzoli.
Můžete vidět, že tty
je konzola, kde proces začíná, a tty0
je vždy aktuální konzole.
-
/dev/console
je virtuální sada zařízení, která lze nastavit jako parametr při bootování. Může být přesměrován na sériové zařízení nebo virtuální konzoli a ve výchozím nastavení ukazuje na/dev/tty0
. Při víceconsole=
volby jsou předány jádru, výstup z konzole půjde na více než jedno zařízení; -
/dev/tty[0-N]
(N
je nejvyšší přiřazené číslo TTY, např. 63) je jedna z virtuálních konzolí, na kterou se přepnete pomocí ovládání -alt -F1 a tak dále; -
/dev/tty0
je také ve výchozím nastavení virtuální konzole; -
/dev/tty
je druh alias konzole (fyzické, virtuální nebo pseudo zařízení, pokud existuje) přidružený k procesu, který ji otevírá. Na rozdíl od ostatních zařízení nepotřebujete k zápisu práva root. Všimněte si také, že procesy podobné těm, které spouštícron
a podobné dávkové procesy nemají použitelné/dev/tty
, protože nejsou s žádnými spojeny. Tyto procesy mají?
vTTY
sloupecps -ef
výstup.
/dev/console
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
V Linuxu lze konzolu jádra nakonfigurovat pomocí console=
možnost spouštění. Kód jádra, který volá printk()
může do něj psát zprávy, např. při načtení zařízení nebo při výskytu chyby. Tyto zprávy jsou také ukládány jádrem. (Viz také dmesg
). Když je konzolové zařízení nalezeno a spuštěno, obdrží všechny dříve uložené zprávy.
Můžete předat console=
vícekrát pro konfiguraci více konzol a zprávy se budou zapisovat do všech z nich. Zjevně můžete vybrat pouze jednu konzoli každého "typu":nemůžete použít obě console=ttyS0
a console=ttyS1
.
Dokumentace jádra specifikuje /dev/console
jako znakové zařízení očíslované (5,1)
. Otevřením tohoto znakového zařízení se otevře "hlavní" konzole, která je poslední tty v seznamu konzolí. První proces mimo jádro, nazvaný init
nebo "PID 1", začíná /dev/console
připojeno ke standardnímu výstupu, standardní chybě a standardnímu vstupu.
Pokud žádná z konzol není tty, otevřete /dev/console
vrátí chybu ENODEV
("Žádné takové zařízení"). Jádro se vytiskne zapište zprávu a spusťte init
bez ohledu na. Příklad konzole jádra, která není zařízením tty, naleznete v části netconsole
, nebo moje oblíbená konzole řádková tiskárna.
Seznam tty konzol můžete také zobrazit přečtením /sys/class/tty/console/active
. dokumentace systemd poukazuje na to, že první zobrazené zařízení je hlavní konzole. Seznam je ve skutečnosti v obráceném pořadí příkazového řádku jádra. Aktuální dokumentace jádra nesprávně uvádí, že poslední zobrazené zařízení je hlavní nebo "aktivní" konzole. Z nějakého důvodu je možné tento soubor dotazovat na změny (v případě, že budou konzolová zařízení odstraněna?).
Uvnitř systemd-nspawn
kontejner, standardní /dev/console
soubor je nahrazen pseudoterminálním zařízením (PTY). Ty by se daly nejlépe popsat jako virtuální koncová zařízení. Jsou vytvářeny dynamicky a používají se také k implementaci grafických emulátorů terminálu, jako je GNOME Terminal, a pro vzdálený přístup jako ssh
.
/dev/tty0
Uzly zařízení Linux TTY tty1
až tty63
jsou virtuální terminály. Jsou také označovány jako VT nebo jako virtuální konzoly. Simulují více konzol nad fyzickým ovladačem zařízení konzoly. Najednou je zobrazena a ovládána pouze jedna virtuální konzole. Aktivní terminál lze přepnout nap. pomocí chvt
, nebo Ctrl+Alt+F1 pomocí libovolného počtu funkčních kláves.
Můžete také číst a zapisovat do aktuálního VT pomocí /dev/tty0
. tty0
je obvyklá kernel konzole, např. pokud jste žádnou explicitně nevybrali. "Systém nejprve hledá VGA kartu [na které běží VT] a poté sériový port." Můžete také nastavit konzoli na konkrétní VT, např. console=tty1
.
"Pokud v systému nemáte VGA kartu, první sériový port se automaticky stane konzolí." "Sériová konzole", jako je ttyS0
je pravděpodobně nejběžnější alternativou k tty0
. Není možné používat systém VT nad sériovou konzolí.
/dev/tty
/dev/tty
je jedním ze tří standardních souborů zařízení specifikovaných POSIX (/dev/
je jedním ze tří jmen adresářů určených POSIX). Jeho otevření je ekvivalentní otevření ovládacího terminálu aktuálního procesu. Řídicí terminál je nastaven, když proces poprvé otevře terminál, alespoň na Linuxu. Například v init
, odkazovalo by se na /dev/console
.
Odpojení od řídicího terminálu je jedním z kroků tradičně požadovaných pro spuštění procesu na pozadí, například systémového logovacího démona. Kroky, jak se stát procesem na pozadí, jsou strašně složité, ale abych byl konkrétní, krok, který se odpojí od řídicího terminálu, je systémové volání setsid. V modernějších systémech je init systém např. systemd na prvním místě spustí službu bez jakéhokoli řídícího terminálu.