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.
aber warum gibt es so viele von ihnen? ist es so etwas wie Pool?
und was ist der Unterschied zwischen / dev / pts / 0, 1, 2 ..., / dev / tty?
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:
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.
Strg + Alt + F2 bringt Sie zum zweiten Terminal. Normalerweise führen die Distributionen ein Anmeldeprogramm (agetty) auf dem virtuellen Terminal aus.
Ü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.
quelle
man /dev/pts
ist ein guter Anfang, auch zuman termios
beachten , 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 ./dev/tty
befindet sich das aktuelle Controlling-Terminal, aber ich weiß nicht, was es ist/dev/tty0
, aber es/dev/tty1
ist das Linux-KMSCON. Und/dev/tty7
ist X-Server.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
quelle