Comment démarrer automatiquement plusieurs sessions d'écran?

21

J'essaie de créer une commande qui se lance screen, crée quatre sessions avec des noms différents et exécute quatre commandes différentes.

Je sais comment faire cela manuellement:

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

Puis-je le faire avec un script bash ou quelque chose? Comment le ferais-je?

Hughes
la source

Réponses:

15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"fera apparaître un écran fonctionnant $COMMANDen arrière-plan.

Vous pouvez voir les sessions actives avec screen -lset les rattacher screen -r "$SESSION_NAME".

Les sessions mortes peuvent être tuées avec screen -wipe.

LawrenceC
la source
Il fait le travail!
Hugh
1
Cette commande crée une nouvelle session d'écran pour chaque commande. Il ne peut pas être utilisé pour créer une session d'écran unique contenant une fenêtre pour chaque commande (comme le font les étapes manuelles de la question). Par conséquent, il ne répond pas à la question et la .screenrcréponse ci-dessous aurait dû être acceptée à la place.
Tey '27
Y a-t-il un réel avantage à multi-fenêtres-une session si tout ce que vous faites est de garder à moindre coût quelque chose qui tourne en arrière-plan?
LawrenceC
29

Pour démarrer automatiquement plusieurs sessions, configurez un .screenrcfichier, un fichier de configuration pour l'écran. Dans celui-ci, vous pouvez créer des sessions, démarrer des programmes, changer le répertoire de travail, etc. Je l'utilise pour initialiser ma session d'écran.

Exemple simple pour un fichier .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 

Les screencommandes ci-dessus créent chacune une session d'écran. -tdéfinit le titre de la session; le reste de la ligne est la commande à exécuter et ses paramètres.

Ainsi, la première et la deuxième screenligne démarrent une session et se lancent à l' vimintérieur. Le troisième commence juste une session et vous dépose à l'invite. chdirmodifie le répertoire de travail pour toutes les sessions suivantes.

Si vous souhaitez avoir plusieurs .screenrcfichiers, nommez-les comme vous le souhaitez et sélectionnez-en un avec screen -c myscreenrc.

sleske
la source
5

Vous pouvez utiliser les options d, m, S ensemble:

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

S: pour créer un écran

d: se détacher d'un écran

m: pour appliquer la création d'écran, que l'écran soit appelé à partir d'un autre écran ou non.

aliasav
la source
3
Intéressant, que vous puissiez écrire comme ceci, au lieu de screen -dmS s1etc. Je ne savais pas que, lors du regroupement des options, celle avec un argument n'avait pas besoin d'être la dernière.
Tomasz Gandor