Come posso avviare automaticamente più sessioni dello schermo?


21

Sto cercando di creare un comando che viene avviato screen, crea quattro sessioni con nomi diversi ed eseguo quattro diversi comandi.

So come farlo manualmente:

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

Posso farlo con uno script bash o qualcosa del genere? Come lo farei?

Risposte:


15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"genererà uno schermo in esecuzione $COMMANDin background.

Puoi vedere sessioni attive con screen -lse ricollegare con screen -r "$SESSION_NAME".

Le sessioni morte possono essere uccise con screen -wipe.


Fa fare il lavoro!
hughes,

1
Questo comando crea una nuova sessione per ogni comando. Non può essere utilizzato per creare una sessione a schermo singolo contenente una finestra per ciascun comando (come fanno i passaggi manuali nella domanda). Pertanto, non risponde alla domanda e la .screenrcrisposta seguente dovrebbe essere stata invece accettata.
Tey '27

c'è qualche reale vantaggio in multi-windows-one-session se tutto ciò che fai è mantenere a buon mercato qualcosa in esecuzione in background?
LawrenceC,

29

Per avviare automaticamente più sessioni, impostare un .screenrcfile, un file di configurazione per lo schermo. In esso, è possibile creare sessioni, avviare programmi, modificare la directory di lavoro, ecc. Lo uso per inizializzare la mia sessione dello schermo.

Esempio semplice per un file .screenrc:

# 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 

I screencomandi sopra ciascuno creano una sessione dello schermo. -timposta il titolo della sessione; il resto della riga è il comando da eseguire e i suoi parametri.

Pertanto, la prima e la seconda screenriga iniziano una sessione e si avviano vimall'interno. Il terzo inizia una sessione e ti lascia al prompt. chdircambia la directory di lavoro per tutte le sessioni successive.

Se vuoi avere più .screenrcfile, chiamali nel modo che preferisci e selezionane uno con screen -c myscreenrc.


5

Puoi usare insieme le opzioni d, m, S:

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

S: per creare uno schermo

d: staccare da uno schermo

m: per imporre la creazione dello schermo, indipendentemente dal fatto che lo schermo venga chiamato da un altro schermo o meno.


3
Interessante, che tu possa scrivere così, invece di screen -dmS s1ecc. Non sapevo che, quando si raggruppavano le opzioni, quella con un argomento non doveva essere l'ultima.
Tomasz Gandor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.