SCREEN : BASH : Sortir d'une session SCREEN lancée en script

Fermé
pixou94 Messages postés 15 Date d'inscription dimanche 5 décembre 2010 Statut Membre Dernière intervention 26 août 2019 - Modifié par pixou94 le 28/04/2014 à 04:20
pixou94 Messages postés 15 Date d'inscription dimanche 5 décembre 2010 Statut Membre Dernière intervention 26 août 2019 - 1 mai 2014 à 01:24
Bonjour,

Avec la commande SCREEN executée sous bash, je souhaiterais qu'une fois le programme terminé dans la session SCREEN, que cette même session soit fermée automatiquement.

A titre d'info, j'ai fait une fonction qui lance autant de session SCREEN avec mon PROGramme que de paramètres passée en ligne de commande. Donc, mon PROGramme qui attend un paramètre va exécuter sa tâche (opérations sur le net) et comme je préfère que ce qu'il a faire soit fait en même temps plutôt que l'un derrière l'autre... Quel serait le paramètre à lui mettre ou comment faire pour qu'il ferme la session automatiquement après que mon PROGramme est terminé sa tâche.

QUESTION BONUS : Comment récupérer le code erreur de mon programme de la session pour l'enregistrer dans un fichier (même fichier pour toutes les sessions), puis sortir.

pdi () {
  nbtour=0
  echo "Ton prog se lance en tache de fond"
  echo;
  for i in "$@" ; do
   nbtour=$(($nbtour + 1))
   screen -dmS tdf$nbtour
   # Le sleep permet de ralentir le script, sinon il a tendance à me générer des erreurs au 
   # lancement des commandes SCREEN (bizarre non !?)
   sleep 0.1
   # Je nomme mes sessions tdf suivi du numéro de session, puis lance mon PROGramme
   # avec les arguments passés en ligne de commande
   screen -S tdf$nbtour -X screen monprog "$i"
   echo tdf$nbtour lancé
  done
}


Merci les amis, je me heurte à un véritable casse tête chinois ;)
A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
28 avril 2014 à 09:16
Salut,

echo "Ton prog se lance en tache de fond"

Pour lancer un programme en tache de fond, pas besoin de
screen
, une simple esperluette (&) en fin de ligne fait très bien l'affaire ;-\

ton_programme &
Voir 15.1. Commandes de contrôle des jobs

Et pour ta question bonus : Fin du script et état de sortie
0
pixou94 Messages postés 15 Date d'inscription dimanche 5 décembre 2010 Statut Membre Dernière intervention 26 août 2019 1
29 avril 2014 à 00:43
Merci Zipe31, les liens sont très intéressant ;)

Cependant, j'étais un utilisateur de nohup & et depuis que j'ai découvert SCREEN, je lâche pas l'affaire !

Je souhaite mettre en tâche de fond, pouvoir y revenir et faire tout ce que me permet SCREEN avec une facilité déconcertante, lorsqu'on l'utilise correctement.

C'est pourquoi je m'acharne à trouver la solution à mon problème, si qqn a la soluce aujourd'hui ou demain, je suis preneur.

Merci encore d'être passé par là Zipe31 ;)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
29 avril 2014 à 10:09
Après une petite relecture du man screen et un passage sur gogole, tu n'étais pas loin avec ta commande
screen -S tdf$nbtour -X screen monprog "$i"
, il manque juste la commande qui doit être interprétée par
-X
. ;-\

Extrait man screen
-X
Send the specified command to a running screen session. You can use the -d or -r option to tell screen to look only for attached or detached screen sessions. Note that this command doesn't work if the session is password protected.


La commande à rectifier :
screen -X -S tdf$nbtour screen monprog "$i" quit
0
pixou94 Messages postés 15 Date d'inscription dimanche 5 décembre 2010 Statut Membre Dernière intervention 26 août 2019 1
1 mai 2014 à 01:24
Bonjour Cher ami zipe31 :)

J'ai pris connaissance de votre message hier et testé aussitôt et le résultat est tombé !

J'ai tenté le coup mais keutchi ! Ça n'a pas fonctionné malheureusement !

Merci d'avoir pris le temps de zieuter en tout cas :) J'apprécie :)

Le pire c'est que je sais que c'est possible, car je l'avait fait une fois (ché plus comment). Cela m'avait saoulé d'ailleurs, je ne l'utilisait pas sous bash (script) et il quittait après avoir terminé (toujours sous SCREEN) mais maintenant que je veux qu'il quitte, Monsieur tape l'incruste et refuse de partir ! Il reste ouvert prêt à enchaîner d'autres tâches !
0