GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum gibt es unter Linux so viele /dev/tty?

Die ttys sind nicht nur Ein-/Ausgabegeräte. Sie erfüllen auch eine besondere Aufgabe, indem sie als Kontrollterminal für eine Sitzung fungieren, wie das Senden von Signalen (Strg+C). /dev/ttyNN sind virtuelle Konsolen, die Vollbildanzeigen auf dem Monitor sind.

Die Terminals beginnen bei /dev/tty1. Sie können normalerweise zu diesen Konsolen wechseln, indem Sie die Tastenkombination Strg+Alt+Fn drücken.

B. Strg+Alt+F1 bringt Sie zum ersten virtuellen Terminal. Heutzutage führen die meisten Linux-Distributionen den X-Server vom tty1 aus. Das Drücken von Strg+Alt+F1 hat also möglicherweise keine Wirkung.

$ ps ax | grep Xorg | grep -v grep
 1504 tty1     Ss+   44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1

Strg+Alt+F2 bringt Sie zum zweiten Terminal. Normalerweise führen die Distributionen ein Anmeldeprogramm (agetty) auf dem virtuellen Terminal aus.

$ ps ax | grep tty2 | grep -v grep
31865 tty2     Ss+    0:00 /sbin/agetty tty2 38400

Die Anmeldeprogramme bieten Ihnen eine Anmeldeaufforderung und ermöglichen Ihnen die Anmeldung mit Benutzername/Passwort. Das Init-Skript entscheidet, wo das gesamte Anmeldeprogramm ausgeführt wird. Abhängig davon sehen Sie möglicherweise eine Anmeldeaufforderung auf, sagen wir tty9. Um zu Ihrer GUI-Oberfläche zurückzukehren, drücken Sie Strg+Alt+F1 (wie in der Beispielausgabe oben).

/dev/tty0 ist ein spezielles Device, das auf das aktuelle Terminal zeigt. Unabhängig davon, von wo aus Sie es ausführen (irgendeine virtuelle Konsole), geht alles, was von tty0 gelesen/geschrieben wird, an Ihr aktuelles Terminal.

Die zweite Spalte in 'ps ax' gibt auch das steuernde Terminal des Programms an. Bei einigen Programmen, wie Daemons, sehen Sie vielleicht, dass die Spalte '?' ist, was bedeutet, dass sie nicht an ein Terminal gebunden sind.

/dev/pts/0 usw. sind Pseudo-Terminalgeräte, die nicht an die Systemanzeige angeschlossen sind. zum Beispiel Terminal, das Sie erhalten, wenn Sie ein Gnome-Terminal oder ein anderes GUI-Terminal öffnen. Dies sind Client-Server-basierte Ansätze, bei denen die Clientseite in Programme wie Bash exportiert wird. Die vom Programm an das Pseudo-Terminal gesendeten Daten werden an die „Server“-Seite gesendet (die normalerweise von einem anderen Programm wie gnome-terminal überwacht wird). Der steuernde Prozess (Serverseite) bestimmt, was an das Terminal gesendet werden muss, was schließlich vom Client gesehen wird. Diese Geräte helfen Ihnen, mehrere 'GUI-Terminals' ohne Einschränkung auf Ihrem System zu öffnen, wobei sie immer noch das gleiche alte Terminal wie Steuerelemente (ioctl(), Farbeinstellung, Senden von Signalen [Strg+C] usw.) bereitstellen.


Linux
  1. So ersetzen Sie eine ausgefallene Festplatte in einem Linux-Software-RAID

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  4. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  5. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0

tty (/dev/tty ) vs. pts (/dev/pts) unter Linux

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Warum listet Linux NVMe-Laufwerke als /dev/nvme0 anstelle von /dev/sda auf?

Warum wird auf einigen Linux-Systemen das Root-Dateisystem als /dev/root statt als /dev/<realer Geräteknoten> in mtab angezeigt?

Erstellen Sie ein virtuelles Blockgerät, das in /dev/null schreibt

Gibt es unter Linux ein Verzeichnisäquivalent zu /dev/null?