J'utilise screen que je trouve génial pour différentes tâches de fond. Et comme d'habitude, je m'amuse à faire des scripts pour automatiser ces tâches. Mais malgré la doc lue et relue, j'ai un souci... Je m'explique.
Voilà un script qui ouvre le screen AAA et y lance le script TEST.sh du dossier /$HOME/bin :
Code : Tout sélectionner
#!/bin/bash
screen -dmS AAA sh
screen -S AAA -X stuff "cd /$HOME/bin/
"
screen -S AAA -X stuff "./TEST.sh
"
Code : Tout sélectionner
ced@Ced-Mint:~$ screen -ls
There is a screen on:
7227.AAA (01. 09. 23 15:19:22) (Detached)
1 Socket in /run/screen/S-ced.
ced@Ced-Mint:~$ screen -r AAACode : Tout sélectionner
$ cd //home/ced/bin/
$ ./TEST.sh
TEST.sh en cours
Appuyer sur Entrée pour quitter le script. Code : Tout sélectionner
#!/bin/bash
sudo pkill TEST.sh
screen -S AAA -X stuff "exit
"
Code : Tout sélectionner
ced@Ced-Mint:~$ screen -ls
No Sockets found in /run/screen/S-ced.
ced@Ced-Mint:~$ Et voici mon problème. Certaines fois, la session screen AAA ne se ferme pas après avoir tué TEST.sh. Ainsi, si je relance mon premier script, une deuxième session screen AAA est créée. Et lorsque le script lance TEST.sh, ce n'est pas possible, car il y a les deux sessions du même nom.
D'où deux questions :
1) Dans un script, comment empêcher la création d'une session screen avec un nom déjà existant ?
2) Dans un script, comment fermer plusieurs sessions screen du même nom ?
Bien sûr, je peux faire tout ça manuellement, mais le but est de faire un script où tout se passe parfaitement en silence.
Merci d'avance aux adeptes de screen pour vos réponses !!