Wie kann ich automatisch mehrere Bildschirmsitzungen starten?

21

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

Ich weiß, wie man das manuell macht:

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

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

Hughes
quelle

Antworten:

15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"erzeugt einen Bildschirm, der $COMMANDim Hintergrund läuft .

Sie können aktive Sitzungen mit screen -lsanzeigen und erneut mit verknüpfen screen -r "$SESSION_NAME".

Tote Sessions können mit getötet werden screen -wipe.

LawrenceC
quelle
Es wird die Arbeit erledigt!
Hughes
1
Dieser Befehl erstellt für jeden Befehl eine neue Bildschirmsitzung. Es kann nicht verwendet werden, um eine einzelne Bildschirmsitzung mit einem Fenster für jeden Befehl zu erstellen (wie es die manuellen Schritte in der Frage tun). Daher wird die Frage nicht beantwortet, und die .screenrcunten stehende Antwort hätte stattdessen akzeptiert werden müssen.
Der
Gibt es einen wirklichen Vorteil bei einer Sitzung mit mehreren Fenstern, wenn Sie nur etwas im Hintergrund laufen lassen möchten?
LawrenceC
29

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 benutze es, 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 

Mit den screenBefehlen oben wird jeweils eine Bildschirmsitzung erstellt. -tlegt den Titel der Sitzung fest; Der Rest der Zeile ist der auszuführende Befehl und seine Parameter.

Somit screenstarten die erste und die zweite Zeile eine Sitzung und starten im vimInneren. Der dritte startet nur eine Sitzung und lässt Sie an einer Eingabeaufforderung fallen. chdirÄndert das Arbeitsverzeichnis für alle nachfolgenden Sitzungen.

Wenn Sie mehrere .screenrcDateien haben möchten , benennen Sie sie einfach nach Belieben und wählen Sie eine mit screen -c myscreenrc.

sleske
quelle
5

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

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

S: Um einen Bildschirm zu erstellen

d: Trennen Sie sich von einem Bildschirm

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

aliasav
quelle
3
Interessant, dass Sie so schreiben können, anstatt screen -dmS s1usw. Ich wusste nicht, dass beim Gruppieren von Optionen die mit einem Argument nicht die letzte sein muss.
Tomasz Gandor