Wie kann ich mehrere Bildschirmsitzungen automatisch starten?

Wie kann ich mehrere Bildschirmsitzungen automatisch starten?

Ich versuche, einen Befehl zu erstellen screen, der startet, vier Sitzungen mit unterschiedlichen Namen erstellt und vier verschiedene Befehle ausführt.

Ich weiß, wie das manuell geht:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

Kann ich dies mit einem Bash-Skript oder so machen? Wie würde ich das machen?

Antwort1

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"$COMMANDwird einen im Hintergrund laufenden Bildschirm öffnen .

Sie können aktive Sitzungen mit anzeigen screen -lsund die Verbindung mit wiederherstellen screen -r "$SESSION_NAME".

Tote Sitzungen können mit beendet werden screen -wipe.

Antwort2

Um mehrere Sitzungen automatisch zu starten, richten Sie eine .screenrcDatei ein, eine Konfigurationsdatei für den Bildschirm. Darin können Sie Sitzungen erstellen, Programme starten, das Arbeitsverzeichnis ändern usw. Ich verwende sie, um meine Bildschirmsitzung zu initialisieren.

Einfaches Beispiel für eine .screenrc-Datei:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

Die screenobigen Befehle erstellen jeweils eine Bildschirmsitzung. -tlegt den Titel der Sitzung fest; der Rest der Zeile ist der auszuführende Befehl und seine Parameter.

Somit screenstarten die erste und zweite Zeile eine Sitzung und führen sie vimaus. Die dritte startet einfach eine Sitzung und bringt Sie zu einer Eingabeaufforderung. chdirändert das Arbeitsverzeichnis für alle nachfolgenden Sitzungen.

Wenn Sie mehrere Dateien haben möchten .screenrc, benennen Sie sie einfach beliebig und wählen Sie eine mit aus screen -c myscreenrc.

Antwort3

Sie können die Optionen d, m und S zusammen verwenden:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S: So erstellen Sie einen Bildschirm

d: von einem Bildschirm lösen

m: Um die Erstellung des Bildschirms zu erzwingen, unabhängig davon, ob der Bildschirm von einem anderen Bildschirm aus aufgerufen wird oder nicht.

Antwort4

In vielen Fällen muss ich zur Untersuchung oder für den Support eine Reihe von Hosts öffnen. Da ich diese zusätzlichen Fenster nur gelegentlich benötige, habe ich mich für ein Shell-Skript anstelle dieses .screenrcAnsatzes entschieden.

beispielsweise in ~/bin/prod_support:

#!/bin/bash

if [[ ! -z "$STY" ]]; then
        screen -t "hosta" ssh hosta
        screen -t "hostb" ssh hostb
else
        echo "start up screen first"
fi

Bei Ausführung von einemohne BildschirmShell, ich erhalte eine Erinnerung ... Wenn es vom Bildschirm aus ausgeführt wird, werden für jeden Skriptlauf betitelte Fenster hinzugefügt.

verwandte Informationen