So führen Sie einen zweiten Befehl in derselben Bildschirmsitzung aus

12

Ich starte den ersten Befehl auf dem Bildschirm wie folgt:

screen -d -m -S testen -t lalala watch df -h

Dadurch wird eine Bildschirmsitzung im Hintergrund ausgeführt und ich kann mich zu einem späteren Zeitpunkt wieder verbinden.

Wie kann ich einen zweiten Befehl in einem neuen Fenster in derselben Bildschirmsitzung ausführen?

TTM
quelle

Antworten:

11

Starten Sie eine Sitzung -Smit benanntem Bildschirm ( ) mit einem benannten Fenster ( -t), das sich -Aim getrennten Modus ( -d -m) an die Terminalgröße ( ) anpasst :

screen -S mySessionName -t myWinName0 -A -d -m

Starten Sie ein anderes benanntes Fenster ( -t) in derselben Bildschirmsitzung ( -S):

screen -S mySessionName -X screen -t myWinName2

Füllen Sie ein paar Befehle ( -X stuff $'cmds') in das zuerst genannte Fenster ( -p) in der Sitzung ( -S):

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

Füllen Sie ein paar Befehle ( -X stuff $'cmds') in das zweite benannte Fenster ( -p) in der Sitzung ( -S):

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

Listen Sie die Bildschirmsitzungen auf und fügen Sie sie erneut hinzu, um zu sehen, was passiert ist:

screen -ls
screen -r mySessionName

Hinweis: Der Zeilenvorschub ( \n) simuliert das Drücken Enter. Sie können auch Semikolons verwenden, um Befehle zu trennen.

Post-
quelle
Sie müssen nicht die "Zeug" -Bits machen. screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
Lotus
4

Innenbildschirm:

  • Ctrl-A, cum ein neues Shell-Fenster zu öffnen
  • Ctrl-A, :screen newcmdLaufennewcmd

Draußen:

screen -X testen "screen newcmd"
user1686
quelle
Hallo Grawity , ich weiß das, aber ich würde es gerne aus einem Init-Skript machen. Grundsätzlich möchte ich 2 Befehle in separaten Fenstern in derselben Bildschirmsitzung starten.
1
@bob: Siehe Beispiel 3, "Außerhalb des Bildschirms", in dieser Antwort.
user1686
Hallo Grawity, screen -S testen -X 'screen echo "hi"'funktioniert nicht.
Ich konnte auch die -X-Methode nicht zum Laufen bringen. Fwiw, mein Bildschirm -v sagt "Bildschirmversion 4.00.03 (FAU) 23-Oct-06"
Lauri Lehtinen
4

Versuchte oben Ansatz, aber der zweite Befehl wurde nicht im zweiten Fenster ausgeführt. Ich habe das Beispiel leicht angepasst, indem ich die Fensternummer anstelle des Fensternamens verwendet habe:

  1. Sitzung erstellen

    screen -S mySessionName -t 0 -A -d -m
    
  2. zweites Fenster erstellen

    screen -S mySessionName -X screen -t 1
    
  3. Befehl an erstes Fenster senden

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. Befehl an zweites Fenster senden

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. Überprüfen Sie nun, ob der Befehl im ersten Fenster ausgeführt wurde

    screen -R mySessionName -p 0
    
  6. Überprüfen Sie nun, ob der Befehl im zweiten Fenster ausgeführt wurde

    screen -R mySessionName -p 1
    

Getestet mit Bildschirm 4.00.03 (CENTOS 6.3 x64).

Bas van Beek BVBMedia
quelle
1

Sie können über das -cArgument eine alternative .screenrc einrichten . In diesem neuen screenrc können Sie mehrere Befehle einrichten, die beim Initialisieren der Bildschirmsitzung gestartet werden.

Am Ende dieser alternativen .screenrc geben Sie die folgenden Befehle ein:

screen 1 cmd1 args
screen 2 cmd2 args

Sie müssen keine alternative Konfigurationsdatei einrichten, wenn Sie nur eine Art von Bildschirmsitzung ausführen möchten und die ausgeführten Standardbefehle immer in Ordnung sind.

Darren Hall
quelle