Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/02/2016, à 16:06

valdoiosn

(RESOLU)sous-shell en arrière-plan

Bonjour,
Je pense que mes 2 questions sont simplistes mais je ne trouve pas de réponses claires:
    Peut on lancer un script shell en arrière plan directement dans CRON?
    Dans un script shell, je lance l’exécution d'un sous-script shell en arrière plan. Le script parent se termine t'il immédiatement après le lancement du script enfant ,ou attend t'il la fin de ce script?

Cordialement

Dernière modification par valdoiosn (Le 10/01/2019, à 15:29)

Hors ligne

#2 Le 04/02/2016, à 16:29

genma

Re : (RESOLU)sous-shell en arrière-plan

Peut on lancer un script shell en arrière plan directement dans CRON?

Oui. Tu ajoutes une tâche Cron qui est un script shell et ça lancera ce script tout seul, qui se finira quand il aura à se finir :-)

Dans un script shell, je lance l’exécution d'un sous-script shell en arrière plan. Le script parent se termine t'il immédiatement après le lancement du script enfant ,ou attend t'il la fin de ce script?

Il suffit de rajouter un "&" à la fin de l'appel de ton second script dans le 1er. Celui-ci se lancera en " tâche de fond ", et reviendra dans le script en cours (ou le shell) pour continuer à faire ce qu'il à faire.
Exemple : "./monscript.sh &" lance monscript dans un sous processus indépendant du fait que celui qui l'appelle est fini ou pas.


"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ?      https://blog.genma.fr
Mon twitter?     http://twitter.com/genma

Hors ligne

#3 Le 04/02/2016, à 17:41

valdoiosn

Re : (RESOLU)sous-shell en arrière-plan

Merci
si je résume à ma façon:
    un script shell lancé dans CRON est toujours exécute en tâche de fond et donc libère le shell pour un autre script éventuel qui pourra s’exécuté en parallèle.
    Lorsque le script parent ( qui ne peut pas être lancé en tâche de fond ) a lancé le script enfant en tache de fond, il s’arrête et donc libère le shell pour lancer un autre script shell éventuel.

Hors ligne

#4 Le 04/02/2016, à 19:47

erresse

Re : (RESOLU)sous-shell en arrière-plan

Bonjour,
Je crois que tu as bien résumé la chose, en effet, sauf peut-être cette assertion :

valdolsn a écrit :

le script parent ( qui ne peut pas être lancé en tâche de fond )

Je ne l'ai jamais tenté, personnellement, mais je ne vois pas pourquoi un script s'exécutant en tâche de fond ne pourrait pas lancer lui aussi un script enfant en tâche de fond...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#5 Le 04/02/2016, à 20:39

jplemoine

Re : (RESOLU)sous-shell en arrière-plan

valdoiosn a écrit :

Lorsque le script parent ( qui ne peut pas être lancé en tâche de fond ) a lancé le script enfant en tache de fond,

Ah bon ? Je crois que c'est ce que je fais régulièrement... Il suffit de lancer le premier script avec & à la fin...
Dans un terminal
./script1.sh &

avec script1.sh
echo "debut script 1"
./script2.sh &
echo "fin script1"

avec script1.sh
sleep 5
echo "script 2"

--> ça doit fonctionner comme tu veux...
debut script 1
fin script1
script 2


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#6 Le 06/02/2016, à 16:34

valdoiosn

Re : (RESOLU)sous-shell en arrière-plan

OK,
Le script1 n'est pas lancé en fond de tâche ( lancé par un logiciel domotique qui ne l'autorise pas), lance bien script2 en fond de tâche et libère immédiatement le SHELL . C'est impeccable.
Pour le lancement par CRON,  j'ai donc compris que tous les script SHELL étaient systématiquement lancés en tâche de fond.

Merci pour votre aide

Hors ligne