Festlegen eines Namens für eine Bildschirmsitzung

44

Gibt es eine Möglichkeit, einer Unix-Bildschirmsitzung einen bestimmten Namen zu geben? Nehmen wir zum Beispiel an, ich führe dasselbe Programm mehrmals mit unterschiedlichen Parametern aus und möchte feststellen, welches Programm welches ist.

Naja eigentlich
quelle
Keine Programmierfrage. Sollte zu SuperUser oder Unix gehen.
0xC0000022L

Antworten:

54

Sie können eine Sitzung benennen, wenn Sie sie mit der -S nameOption starten . Innerhalb eines laufenden Bildschirms können Sie ihn durch Eingabe ändern CTRL-a, :sessionname name. Sie können laufende Bildschirmsitzungen mit anzeigen screen -lsund mit namentlich eine Verbindung herstellen screen -xS name.

Innerhalb einer einzelnen Bildschirmsitzung können Sie jedes Fenster auch benennen. Geben CTRL-a, ASie dazu den gewünschten Namen ein. Sie können eine interaktive Liste benannter Fenster anzeigen, indem Sie Folgendes eingeben CTRL-a, "und das Fenster auswählen, zu dem Sie wechseln möchten.

Das Benennen von Bildschirmen und Terminals in Bildschirmen ist sehr hilfreich, um sich zu erinnern, was sie sind und warum Sie sie überhaupt gestartet haben.

Lars Yencken
quelle
Das Umbenennen einer Bildschirmsitzung nach dem Start ist möglich (mithilfe von :sessionname NEWNAME), wird jedoch "im Allgemeinen nicht empfohlen". Die $STYUmgebungsvariable verweist weiterhin auf den ursprünglichen Namen. Siehe screenHandbuch: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson
22

Hier gibt es zwei Konzepte, und ich bin mir nicht sicher, welches Sie im Sinn haben:

  • Sie können mehrere Bildschirmfenster haben. Jedes Fenster führt eine Shell oder ein anderes Programm aus. Alle Fenster werden nach demselben Verfahren gehostet. C-a cErstellt ein Fenster C-a nund C-a pwechselt zum nächsten / vorherigen Fenster und so weiter.
  • Sie können mehrere Bildschirmsitzungen haben. Jede Sitzung wird von einem eigenen Prozess gehostet und ist unabhängig von allen anderen Sitzungen. Wenn Sie den Bildschirm ohne die Option zum erneuten Anfügen ( -roder -R) starten, wird eine neue Sitzung erstellt.

Windows verfügt über Titel, die über die -tBefehlszeilenoption, die C-a ATastenbindung, den titleBefehl oder die \ekEscape-Sequenz festgelegt werden können. Weitere Informationen finden Sie in der Antwort von Shellter .

Sitzungen können Namen haben. Normalerweise wird der Name in der Befehlszeile mit der -SOption festgelegt. Wenn Sie keinen Namen angeben, wird dieser auf dem Bildschirm angezeigt. Wenn Sie mehrere Bildschirmsitzungen verwenden, geben Sie ihnen normalerweise unterschiedliche Sitzungsnamen. Sie können die laufende Bildschirmsitzung mit screen -lsauflisten. Das erste Wort in jeder Sitzungszeile ist, 12345.sessionnamewo 12345 die Bildschirmprozess-ID ist. Verwenden Sie screen -r sessionnameoder screen -r 12345, um eine Sitzung fortzusetzen, die durch den Namen oder die Prozess-ID angegeben ist.

Gilles 'SO - hör auf böse zu sein'
quelle
1
In den Standardtastenbelegungen müssen Sie zum Ändern des Titels Ca A.
enzotib
11

Ah ... Screen, es bringt mich zurück ;-)

Für ein Fenster

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

Für mehrere Sitzungen, die von Ihrem .screenrc aus gestartet wurden

screen -t top 2 nice top
screen -t ....

Hier ist ein Link zu einer Online-Kopie der Manpage für screen.

Bearbeiten: hinzugefügt

Um den Namen des aktuellen Bildschirms zu ändern, erstellen Sie ein Shell-Skript-Tool wie

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

Ungetestet, auf dem System, an dem ich arbeite, ist kein Bildschirm verfügbar.

Shellter
quelle
Danke, das hilft sehr. Gibt es überhaupt eine Möglichkeit, eine bereits vorhandene Bildschirmsitzung umzubenennen?
eigentlich
@Charlotte: siehe Änderungen. Danke für die Stimmen!
Shellter
Schöne Antwort @Shellter! Ich bin neugierig, hast du gesagt "Nimm mich zurück", um zu bedeuten, dass du heutzutage etwas anderes verwendest (z. B. tmux), oder nur, dass es über 32 Jahre alt ist ?
TutuDajuju
1
@tutuDajuju: Gulp, jetzt wo ich darüber nachdenke, habe ich screenmindestens 25 Jahre gebraucht . Nimmt mich zurück, denn jetzt ist es ein spezieller Anwendungsfall, zu dem ich mich begeben würde screen. Normalerweise öffne ich einfach weiter X-Terms, aber ich erinnere mich, als es unmöglich schien, Xauf einem 486 PC zu laufen ;-) Prost!
Shellter
@Shellter FYI, ich lief X auf einem 486-PC mit 8 MB RAM im Jahr 1992 ...
Eno
4

Während des Laufens screen:

Ctrl+a(oder was auch immer Ihre screenEscape-Sequenz ist)A

Ninjalj
quelle
3

In den obigen Antworten ist bereits angegeben, wie ein Bildschirm beim Starten benannt wird. Sie weisen auch darauf hin, dass ein Bildschirm nach dem Start nicht mehr umbenannt werden kann. Der Fenstertitel kann festgelegt werden, aber der Name, der zum Anhängen an den Bildschirm verwendet wird, bleibt pid.pty.host.

Um jedoch einen nützlichen Effekt zu erzielen, habe ich festgestellt, dass die Verwendung von Alias ​​ziemlich gut funktioniert. Wenn ich vergesse, einen Bildschirm zu benennen, oder mich in einer Sitzung mit einer Reihe von Bildschirmen wiederfinde, die natürlich zu Bildschirmen für bestimmte Aufgaben geworden sind, lege ich einfach einen Alias ​​für den Befehl fest, der an diese angehängt werden soll.

Beispiel:

alias goncompile='screen -r 2354'

Wenn Sie den Alias-Befehl selbst eingeben, werden Sie daran erinnert, über welche Bildschirme Sie verfügen und welchen Befehl Sie zum Anhängen an diese festgelegt haben.

Verwenden Sie unalias, um sie zu entfernen.

Caoimhin
quelle