Wie kann ich überprüfen, welches tty ich gerade verwende?


21

Es gibt 7 Terminals, die in unserem System verwendet werden können. tty7ist GUI-basiert.

Woher weiß ich, welches Tty ich gerade benutze?

wie, tty1, tty2 .... tty6?


Warum behaupten Sie, es sei ein "Punkt" in Kommentaren? Das ist völlig anders als das, was Sie hier fragen. Die Sitzung in einer GUI ist KEINE tty.
Rinzwind

1
Ich bin verwirrt über dieses Konzept, deshalb
luv.preet

Antworten:


30

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 ttygrafischen 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

4
+1, obwohl in Mate-Terminal who am inichts zurückgibt, und whoamizurückgibt zanna, (während whoalle 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)).
Zanna

Grafik wird immer tty7 verwenden, da dies die einzige 1 ist, die grafische Unterstützung bietet
luv.preet

1
@Zanna Ich begegne dieser Situation selbst, halte es aber für erwähnenswert.
Ravexina

1
Auf jeden Fall who am ifunktioniert das in einem vt immer gut, und das pgrepist 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 ...
Zanna

1
@ luv.preet, das ist nicht im Rahmen Ihrer Frage, aber siehe Unterschied zwischen pts und tty :) - der Beitrag, von dem dies ein Duplikat ist, hat eine tolle Antwort
Zanna

14

Verwenden ttyBefehl.

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

es zeigt pts / 18.
luv.preet

Dieses PTS könnte in einem tty laufen, nicht wahr? Wie kann ich das wissen?
luv.preet

5
@ luv.preet das ist dein terminal. Siehe "Unterschied zwischen pts und tty" .
Chai T. Rex

4
ptsbedeutet, dass Sie ein Terminal von der GUI oder über SSH verwenden
lithium_js

3
Dafür müssen Sie eine neue Frage stellen.
Chai T. Rex

5

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 ioderps 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 fgconsolekann 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.


5

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.

  1. 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 .

  2. 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.

  3. 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:

    Wiederherstellungsmenü

  4. Scrollen Sie mit den Pfeiltasten zum Stammverzeichnis und drücken Sie Enter.

    Sie sollten jetzt eine Root-Eingabeaufforderung sehen, etwa so:

    root@ubuntu:~#
    
  5. 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.


Öffnet dies immer tty1?
luv.preet

Nein, es öffnet keine tty. Stattdessen wird das Root-Dateisystem von Ubuntu, das Sie auf Ihrer Festplatte installiert haben, als interaktive Shell mit Schreibrechten bereitgestellt, sodass Sie Befehle ausführen können.
Karl

2

Ich denke, Sie kümmern sich um etwas anderes als die anderen Antworten. Laufen Sie sudo fgconsole , um herauszufinden, welche Realty jetzt aktiv ist.


@karel Es ist leicht vorstellbar, dass Sie die aktuelle TTY-Ankündigung verpassen. Zum Beispiel löscht Ihr Bash-Profil den Bildschirm. Ich habe einen Befehl angeboten, der jederzeit verwendet werden kann, nicht nur unmittelbar nach der Anmeldung. WRT Strg + Alt + F1 funktioniert nicht - es gibt eine schnelle Umgehung: Verwenden Sie chvt oder openvt.
marian adam

Und übrigens mit sudo. Deshalb hast du den Fehler bekommen.
Adam

1

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.


0

Mit Ausnahme der GUI, in welchem ​​Fall Sie einen Punkt erhalten, zeigt dies Ihre gewünschte Ausgabe:

ls -l `tty` | awk '{print $10}'
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.