Es gibt 7 Terminals, die in unserem System verwendet werden können. tty7
ist GUI-basiert.
Woher weiß ich, welches Tty ich gerade benutze?
wie, tty1, tty2 .... tty6?
Es gibt 7 Terminals, die in unserem System verwendet werden können. tty7
ist GUI-basiert.
Woher weiß ich, welches Tty ich gerade benutze?
wie, tty1, tty2 .... tty6?
Antworten:
Es gibt verschiedene Möglichkeiten, dies herauszufinden. Ich würde mit dem who am i
(nicht who
) Befehl gehen:
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
Wenn ich mich in einem Grafikterminal befinde, würde Folgendes zurückgegeben:
ravexina pts/0 2017-04-10 1:19 (:0)
Unter ssh-Sitzung mit einem grafischen Terminal ist das Ergebnis dasselbe, aber anstelle von (: 0) erhalte ich die IP-Adresse meines Computers (192.168.xx). andere Befehle wie w
, who
, pgrep
, ps
, etc. sind ebenfalls hilfreich.
Um zum Beispiel herauszufinden, an welcher tty
grafischen Oberfläche ich arbeite, gehen Sie wie folgt vor:
ps $(pgrep Xorg)
Was in meinem Fall, weil ich keinen Display Manager wie gdm oder slim benutze:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
who am i
nichts zurückgibt, und whoami
zurückgibt zanna
, (während who
alle Sitzungen zurückgibt (ich erinnere mich an eine verwandte Frage (die sich als unbeantwortet erwies), bei der wir festgestellt haben, dass verschiedene Emulatoren unterschiedliche Ausgaben von erzeugten who
)).
who am i
funktioniert das in einem vt immer gut, und das pgrep
ist sehr schlau (Sie möchten vielleicht die $()
Syntax für Befehlsunter-Backticks verwenden, was beim Markdown etwas verwirrend sein kann), daher ist Ihre Antwort sehr nett und wer auch immer das downvotet, sollte es nicht getan haben ...
Verwenden tty
Befehl.
Wenn ich Recht habe, ist dies die Referenz:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
bedeutet, dass Sie ein Terminal von der GUI oder über SSH verwenden
Machen wir einen Schritt zurück und beginnen mit der Verwirrung: Was ist ein Tty? Ursprünglich war tty eine Abkürzung für Teletyp, die zu Glas-Teletyp wurde, der zu einem beliebigen Terminal oder der Verbindung zu einem bestimmten seriellen Anschluss wurde (es gibt immer noch die gebräuchlichsten Befehle / dev / ttyS0, / dev / ttyUSB0 und manchmal / dev / ttyacm0). Dann haben Sie Pseudo ttys und virtuelle ttys. alte unix-hände kennen sich mit pseudo-ttys aus diese werden für remote-terminals (ssh und telnet), virtuelle terminals (xterm und dergleichen) und terminal-multiplexer (screen und tmux) verwendet. Pseudotypen hatten im Laufe der Zeit verschiedene Benennungsschemata, aber die aktuelle verwendet Namen wie / dev / pts / 0. Virtuelle Konsolen hingegen sind virtuellen Konsolen zugeordnet, insbesondere, wenn Sie Steuerungs- oder Funktionstasten verwenden, um virtuelle Konsolen zu wechseln, von denen jede mit einem virtuellen Konsolenpaar verbunden ist.
Wenn Sie also Ihre Pseudotty finden müssen (oder virtuelle Tty, wenn Sie den Textmodus verwenden), gibt es alle möglichen Lösungen wie who am i
oderps ax|grep $$
dies ist relativ einfach, da es mehrere Möglichkeiten gibt, dies herauszufinden, wenn die Pseudotty auf Standard-io geöffnet wird In den meisten Fällen gibt es auch andere Methoden, die funktionieren, wenn io umgeleitet wird. Dies hat auch den Vorteil, dass Sie auch dann das Richtige tun, wenn Sie serielle und virtuelle Schnittstellen verwenden, solange Sie keine grafischen Terminalemulatoren oder Terminalmultiplexer verwenden.
Aber was ist, wenn Sie die virtuelle Konsole identifizieren möchten? sudo fgconsole
kann für interaktive Fälle nützlich sein. Oder ich gehe einfach auf den Konsolen spazieren, da das Umschalten normalerweise schnell genug ist. Mir ist keine programmatische Methode bekannt, die in nicht interaktiven oder nicht im Vordergrund befindlichen Fällen zuverlässig funktioniert.
Schauen wir uns ein Beispiel an, das garantiert nicht in der Lage ist, die virtuelle Konsole jemals zuverlässig zu beantworten. Der Computer, auf dem ich vor (alpha) sitze, hat einen Xserver auf tty2 (: 1), ich habe drei geöffnete Fenster, zwei xterms und einen vncviewer (verbunden mit bravo: 2). Auf einem xterm wird screen ausgeführt, auf dem anderen ssh charley. Auf dem Bildschirm sind zwei Fenster geöffnet, ssh delta und who (wer identifiziert die Pseudo-Tty in Spalte zwei richtig und gibt den Hinweis(:1:S0)
in Spalte fünf , dass das Pseudotty mit der ersten Bildschirmsitzung verbunden ist, die mit dem zweiten X-Server verbunden ist). gibt aber keine Informationen zur virtuellen Konsole aus). Wer über eine der beiden SSH-Sitzungen läuft, gibt den Hinweis(alpha)
Dies identifiziert die Maschine, von der die SSH-Sitzung stammt, und ist für Remote-Sitzungen vergleichsweise gut geeignet. Obwohl nur wenige Informationen darüber vorliegen, was mit dem Pseudotty verbunden ist (und absolut keine Informationen zur virtuellen Konsole oder zu Remote-Tty verfügbar sind), wird zumindest der Remote-Host identifiziert. Die Informationen zum Bildschirm können falsch sein, da Bildschirmsitzungen nicht abnehmbar sind und vnc überhaupt keine nützlichen Informationen liefert, da der einzige Unterschied zwischen einer vnc-Sitzung und einer lokalen Sitzung die angezeigte Nummer ist. In vielen Fällen kann man annehmen, dass: 0 auf tty7 ist, aber nicht immer, und niemals auf meins, da bravo überhaupt keine Grafikkarte hat und: 0 eine vnc-Sitzung ist (was verwirrt, wer da denkt, dass es die lokale Konsole ist) und keiner der Rechner verwendet tty7 als grafische Sitzung, weil ich (nicht nur, um das Gegenteil zu sein) Protokolle an tty7 (und tty5, tty6 und tty8) auch an anderer Stelle grafische Sitzungen religieren. Der Wartebildschirm kann jedoch auch als Terminalprogramm fungieren, mit dem Sie eine Sitzung über ein serielles Kabel einrichten können. Was meldet eine solche Sitzung, wenn wer ausgeführt wird? Warum nix anderes als die serielle Schnittstelle, sei es über VNC, XTERM, SSH, Bildschirm und einen USB-Serial-Adapter auf einmal oder ist mit meinem Televideo verbunden.
Wenn Sie sich bei einem tty angemeldet haben, wird automatisch angezeigt, welches tty Sie in der ersten Zeile verwenden.
Wenn durch Drücken der Tastenkombination Ctrl+ Alt+ F3nur ein schwarzer Bildschirm angezeigt wird, wie Sie in einem Kommentar geschrieben haben, gibt es eine alternative Möglichkeit, beim Booten des Computers auf eine Root-Shell zuzugreifen, ohne Ctrl+ Alt+ F3zu drücken , um ein tty aufzurufen.
Drücken und halten Sie unmittelbar nach dem BIOS / UEFI-Begrüßungsbildschirm während des Startvorgangs im BIOS die ShiftTaste, um das GNU GRUB-Menü aufzurufen. (Wenn Sie das Ubuntu-Logo sehen, haben Sie den Punkt verpasst, an dem Sie das GRUB-Menü aufrufen können.) Drücken Sie mit UEFI (möglicherweise mehrmals) die EscTaste, um zum GRUB-Menü zu gelangen. Manchmal ist der Begrüßungsbildschirm des Herstellers Teil des Windows-Bootloaders. Wenn Sie den Computer also einschalten, wird direkt der GRUB-Bildschirm angezeigt, und das Drücken von Shiftist nicht erforderlich .
Wählen Sie im ersten lila GNU GRUB-Bildschirm mit den Tasten ↑ und ↓ Erweiterte Optionen für Ubuntu aus und drücken Sie Enter. Sie werden dann von einem anderen violetten GNU GRUB-Menü aufgefordert, das eine Liste von Kerneloptionen enthält.
Drücken Sie die Abwärtspfeiltaste, bis Sie den zweiten Eintrag von oben ausgewählt haben (der mit dem Wiederherstellungsmodus in der Beschreibung), und drücken Sie dann Enter.
Jetzt sollten Sie dieses Wiederherstellungsmenü sehen:
Scrollen Sie mit den Pfeiltasten zum Stammverzeichnis und drücken Sie Enter.
Sie sollten jetzt eine Root-Eingabeaufforderung sehen, etwa so:
root@ubuntu:~#
Zu diesem Zeitpunkt sollten Sie ein schreibgeschütztes Dateisystem haben. Sie müssen es mit Schreibrechten erneut einbinden:
mount -o rw,remount /
Jetzt können Sie Befehle wie in einem Terminal ausführen.
Ich denke, Sie kümmern sich um etwas anderes als die anderen Antworten. Laufen Sie sudo fgconsole
, um herauszufinden, welche Realty jetzt aktiv ist.
Verwenden Sie das Kommando tty, es funktioniert unter Linux und MacOS und gibt eine ziemlich einfache Ausgabe aus, die nur den Namen des Tty enthält, in dem Sie sich befinden.
Beispiel:
$ tty
/dev/pts/0
Es ist einfach, dieses Skript zu erstellen oder es in die Eingabeaufforderung aufzunehmen, Beispiel:
$ PS1='`tty`: '
/dev/pts/0: _
Auf diese Weise wissen Sie immer, in welchem Terminal Sie sich befinden.