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"
$COMMAND
wird einen im Hintergrund laufenden Bildschirm öffnen .
Sie können aktive Sitzungen mit anzeigen screen -ls
und 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 .screenrc
Datei 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 screen
obigen Befehle erstellen jeweils eine Bildschirmsitzung. -t
legt den Titel der Sitzung fest; der Rest der Zeile ist der auszuführende Befehl und seine Parameter.
Somit screen
starten die erste und zweite Zeile eine Sitzung und führen sie vim
aus. 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 .screenrc
Ansatzes 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.