das Gerät aus seiner tty-Datei nachschlagen?

7

Hier ist von meinem Ubuntu

$ ls /dev/*tty*
/dev/tty    /dev/tty17  /dev/tty26  /dev/tty35  /dev/tty44  /dev/tty53  /dev/tty62      /dev/ttyS12  /dev/ttyS21  /dev/ttyS30
/dev/tty0   /dev/tty18  /dev/tty27  /dev/tty36  /dev/tty45  /dev/tty54  /dev/tty63      /dev/ttyS13  /dev/ttyS22  /dev/ttyS31
/dev/tty1   /dev/tty19  /dev/tty28  /dev/tty37  /dev/tty46  /dev/tty55  /dev/tty7       /dev/ttyS14  /dev/ttyS23  /dev/ttyS4
/dev/tty10  /dev/tty2   /dev/tty29  /dev/tty38  /dev/tty47  /dev/tty56  /dev/tty8       /dev/ttyS15  /dev/ttyS24  /dev/ttyS5
/dev/tty11  /dev/tty20  /dev/tty3   /dev/tty39  /dev/tty48  /dev/tty57  /dev/tty9       /dev/ttyS16  /dev/ttyS25  /dev/ttyS6
/dev/tty12  /dev/tty21  /dev/tty30  /dev/tty4   /dev/tty49  /dev/tty58  /dev/ttyprintk  /dev/ttyS17  /dev/ttyS26  /dev/ttyS7
/dev/tty13  /dev/tty22  /dev/tty31  /dev/tty40  /dev/tty5   /dev/tty59  /dev/ttyS0      /dev/ttyS18  /dev/ttyS27  /dev/ttyS8
/dev/tty14  /dev/tty23  /dev/tty32  /dev/tty41  /dev/tty50  /dev/tty6   /dev/ttyS1      /dev/ttyS19  /dev/ttyS28  /dev/ttyS9
/dev/tty15  /dev/tty24  /dev/tty33  /dev/tty42  /dev/tty51  /dev/tty60  /dev/ttyS10     /dev/ttyS2   /dev/ttyS29
/dev/tty16  /dev/tty25  /dev/tty34  /dev/tty43  /dev/tty52  /dev/tty61  /dev/ttyS11     /dev/ttyS20  /dev/ttyS3

Ich habe 7 virtuelle Konsolen.

Ich habe auch einige Registerkarten im Gnome-Terminal geöffnet und mehrere Emacs (einige laufende Shell, aber ich habe sie wahrscheinlich alle geschlossen) und Bildschirmsitzungen (aber jetzt geschlossen).

  1. Was ist der Unterschied zwischen /dev/tty, /dev/tty[[:digit:]]+, /dev/ttyprintkund /dev/ttyS[[:digit:]]+?
  2. Wie kann ich herausfinden, welchem ​​Gerät jede tty-Datei entspricht?
  3. Einige sagten, die Gerätedateien für pseudo tty seien / dev / pty , aber warum gibt es hier keine pty-Datei oder kein Verzeichnis:

    $ ls /dev/*pty*
    ls: cannot access /dev/*pty*: No such file or directory
    
  4. Nicht sicher, was /dev/*pts*bedeutet:

    $ ls /dev/*pts* 
    0  1  10  11  12  13  14  15  16  17  18  2  20  21  22  23  24  26  3  4  5  6  7  8  9  ptmx
    

Danke und Grüße!

Tim
quelle
Wofür erhalten Sie bei Frage 3 eine Ausgabe ls /dev/*pts*?
Ramesh
ls: cannot access /dev/*pty*: No such file or directory
Tim
Versuchen Sie ptsstatt pty.
Ramesh
In meiner Bearbeitung jetzt.
Tim
Überprüfen Sie die Updates für Frage 3 und Frage 4.
Ramesh

Antworten:

4

Was ist ein Terminal?

Ein Terminal besteht aus einem Bildschirm und einer Tastatur, über die remote mit einem Computer (dem Host) kommuniziert wird. Man benutzt es fast wie einen Personal Computer, aber das Terminal ist von seinem Host-Computer entfernt, mit dem es kommuniziert (auf der anderen Seite des Raums oder sogar auf der anderen Seite der Welt).

Frage 1

  1. /dev/ttysteht für das steuernde Terminal (falls vorhanden) für den aktuellen Prozess. Um herauszufinden, welche tty an welche Prozesse angehängt sind, verwenden Sie den ps -aBefehl an der Shell-Eingabeaufforderung (Befehlszeile). Schau dir die ttySpalte an. Für den Shell-Prozess, in /dev/ttydem Sie sich befinden , ist das Terminal, das Sie jetzt verwenden.
  2. Unter Linux wird der PC - Monitor der Konsole genannt und hat damit mehrere Gerätedateien zugeordnet: tty0, tty1, tty2usw. Wenn Sie sich anmelden Sie sind tty1. Um zu tty2drücken Alt- F2. tty1, tty2Etc. sind virtuelle Terminals (manchmal auch als "virtuelle Konsolen" genannt). Sie können sich an verschiedenen virtuellen Terminals anmelden und so einige verschiedene Sitzungen mit dem Computer gleichzeitig abhalten. Sie wechseln zwischen ihnen mit der Taste Alt- F?wo "?" ist die gewünschte Nummer des virtuellen Terminals. Die Konsole wird auch als bezeichnet, /dev/tty0und Systemmeldungen werden möglicherweise an dieses Gerät gesendet und auf Ihrer Konsole angezeigt. Nur das System oder der Root-Benutzer darf schreiben, /dev/tty0mit dem /dev/consolemanchmal verbunden ist.
  3. ttyprintkist ein Pseudo-TTY-Treiber, mit dem Benutzer printkNachrichten über die Ausgabe an das ttyprintkGerät senden können .
  4. /dev/tty/S[[:digit:]]repräsentiert die seriellen Schnittstellen. Jedes Terminal ist mit einer seriellen Schnittstelle des Host-Computers verbunden (häufig nur mit einem PC). Die Ports haben Namen / Nummern. Die erste ist: ttyS0, ttyS1, ttyS2usw. Diese wird durch spezielle Dateien in dem gefundenen dargestellt wird /dev(Gerät) Verzeichnis. ttyS0entspricht COM1 unter DOS oder Windows. ttyS1ist COM2 usw.

Frage 3 und Frage 4 sind verwandt. Gilles hat von hier aus eine wunderbare Erklärung . Einige der Auszüge aus seiner Antwort sind:

Pseudo-Terminals werden von einem Terminal-Emulator bereitgestellt, der eine Anwendung ist. Einige Arten von Pseudo-Terminals sind:

  • GUI-Anwendungen wie xterm, gnome-terminal, konsole, ... wandeln Tastatur- und Mausereignisse in Texteingabe um und zeigen die Ausgabe in einigen Schriftarten grafisch an.
  • Multiplexer-Anwendungen wie Bildschirm- und Tmux-Relais-Ein- und Ausgabe von und zu einem anderen Terminal, um Textmodus-Anwendungen vom eigentlichen Terminal zu entkoppeln.
  • Remote-Shell-Anwendungen wie sshd, telnetd, rlogind, ... leiten die Ein- und Ausgabe zwischen einem Remote-Terminal auf dem Client und einem Pty auf dem Server weiter.

Außerdem sehe ich auf der Wiki-Seite des Pseudo-Terminals die folgenden Informationen.

Die Master-Gerätedatei, die im Allgemeinen den Namen / dev / pty [p-za-e] [0-9a-f] hat, ist der Endpunkt für die Kommunikation mit dem Terminalemulator. Mit diesem [p-za-e] -Namensschema können höchstens 256 tty-Paare vorhanden sein. Das Finden des ersten freien Pty-Masters kann auch rassig sein, wenn kein Sperrschema angewendet wird. Aus diesem Grund implementieren neuere BSD-Betriebssysteme wie FreeBSD Unix98-PTYs. [4]

BSD-PTYs wurden von Unix98-Ptys überholt, deren Benennungssystem die Anzahl der Pseudo-Terminals nicht einschränkt und deren Zugriff ohne Gefahr von Rennbedingungen erfolgt. / dev / ptmx ist der "Pseudo-Terminal-Master-Multiplexer". Beim Öffnen wird ein Dateideskriptor eines Masterknotens zurückgegeben und ein zugeordneter Slave-Knoten / dev / pts / N erstellt

Ich vermute also, dass /dev/ptyes nicht verfügbar ist, weshalb Sie sehen /dev/pts.

Verweise

http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-7.html

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

http://lkml.iu.edu/hypermail/linux/kernel/1009.0/00333.html

Ramesh
quelle
Vielen Dank. "Für den Shell-Prozess, in /dev/ttydem Sie sich befinden , ist das Terminal, das Sie jetzt verwenden." Wenn ich zu einer anderen Registerkarte des Gnome-Terminals wechsle, wird echo 1 > /dev/ttyimmer 1auf der aktuellen Registerkarte des Gnome-Terminals ausgegeben . Sind nicht alle tty-Dateien an die Terminalprozesse gebunden? Wie sind sie mit den Terminalprozessen verbunden?
Tim