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


27

Wenn ich in Ubuntu 10.04 unter / dev nachschaue, gibt es mehr als 50 ttys. tty0, tty1, tty2 ....

Soweit ich weiß, ist tty ein Zeichengerät für die Eingabe / Ausgabe auf der Konsole.

  1. aber warum gibt es so viele von ihnen? ist es so etwas wie Pool?

  2. und was ist der Unterschied zwischen / dev / pts / 0, 1, 2 ..., / dev / tty?

  3. Wenn ich ein Terminal öffne, wird unter / dev / pts eine neue Nummer angelegt. aber ich weiß nicht wann / dev / tty? wird genutzt.

    Selbst wenn ich eine SSH-Verbindung herstelle, ist die Anzahl der / dev / tty s gleich.

    und wenn doch

    cat /dev/tty0
    

    und tippe etwas in tastatur bekomme ich entsprechende ausgaben. warum passiert das?


Antworten:


25

Die ttys sind nicht nur Eingabe- / Ausgabegeräte. Sie übernehmen auch eine besondere Aufgabe als steuerndes Terminal für eine Sitzung, z. B. das Senden von Signalen (Strg + C). / dev / ttyNN sind virtuelle Konsolen, die als Vollbild auf dem Monitor angezeigt werden.

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

Mit Strg + Alt + F1 gelangen Sie zum ersten virtuellen Terminal. Heutzutage führen die meisten Linux-Distributionen den X-Server von tty1 aus. Daher hat das Drücken von Strg + Alt + F1 möglicherweise keine Auswirkung.

$ 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

Über die Anmeldeprogramme erhalten Sie eine Anmeldeaufforderung und können sich mit Benutzername / Passwort anmelden. Das Init-Skript entscheidet, wo das gesamte Anmeldeprogramm ausgeführt wird. Je nachdem, ob Sie eine Anmeldeaufforderung sehen oder nicht, sagen Sie tty9. Um zu Ihrer GUI-Oberfläche zurückzukehren, drücken Sie Strg + Alt + F1 (wie in der obigen Beispielausgabe).

/ dev / tty0 ist ein spezielles Gerät, das auf das aktuelle Terminal verweist. Unabhängig davon, von wo aus Sie es ausführen (eine beliebige virtuelle Konsole), wird alles, was von tty0 gelesen / in tty0 geschrieben wird, an Ihr aktuelles Terminal gesendet.

Die zweite Spalte in 'ps ax' gibt auch das steuernde Terminal des Programms an. Bei einigen Programmen, wie z. B. Daemons, wird möglicherweise die Spalte "?" Angezeigt. Dies bedeutet, dass sie nicht an ein Terminal gebunden sind.

/ dev / pts / 0 usw. sind Pseudo-Endgerä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. Hierbei handelt es sich um einen Client-Server-basierten Ansatz, bei dem die Client-Seite 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 Steuerungsprozess (Serverseite) bestimmt, was an das Terminal gesendet werden muss, was schließlich vom Client gesehen wird. Mit diesen Geräten können Sie mehrere 'GUI-Terminals' ohne Einschränkung auf Ihrem System öffnen und dabei dieselben alten Terminals wie Steuerelemente (ioctl (), Farbeinstellung, Sendesignale [Strg + C] usw.) verwenden.


2
Woher soll man das wissen, außer es hier zu fragen? eine Manpage?
n611x007

1
@ n611x007 - man /dev/ptsist ein guter Anfang, auch zu man termiosbeachten , dass Client / Server unter den ptys bidirektional - ew und Punkten - wo ein virtuelles Terminal wie gnome-terminal oder xterm in der Regel an den Master und eine Shell wie bash verbunden ist, der Slave .
Wulfgarpro

Auf meinem System /dev/ttybefindet sich das aktuelle Controlling-Terminal, aber ich weiß nicht, was es ist /dev/tty0, aber es /dev/tty1ist das Linux-KMSCON. Und /dev/tty7ist X-Server.
CMCDragonkai

Dies beantwortet jedoch nicht die Frage. Wie bereits erwähnt, gibt es 64 / dev / ttyN-Geräte. 1-8 sind virtuelle Konsolen. ptys sind unter / dev / pts getrennt. Auf welchem ​​System wird / dev / tty30 jemals verwendet und wie?
Andrew McGuinness

1

Ich möchte nur die Zusammenhänge dieser Art von Dingen klären.

Erstens ist / dev / tty auf Prozessebene und kann ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty ( pts / 0, pts / 1) und etwas anderes sein.

/ dev / tty0 ist ein Alias ​​der aktuellen (Vordergrund-) virtuellen Konsole. Dies kann also tty1, tty2 usw. sein. Beachten Sie, dass ttyS0 kein Alias ​​ist. Es ist die erste serielle Schnittstelle.

/ dev / console ist die Systemkonsole und zeigt standardmäßig auf / dev / tty0. Es kann ttyn, ttySn, ttyUSBn, lpn usw. sein.

Grob gesagt, / dev / tty> / dev / cosole> / dev / tty0


Ist das ein Zitat von irgendwoher, haben Sie eine Referenz dafür?
Könnte

@ Xen2050 Nein, aber hoffen , dass diese Informationen hilfreich tldp.org/HOWTO/Remote-Serial-Console-HOWTO/...
firo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.