Contôler une sous-tache de fond spécifique d'un script Bash ?

Contôler une sous-tache de fond spécifique d'un script Bash ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-09-2013 à 14:59:56    

Le script bash "Parent" lance qqes scripts "enfants" an arrière-plan (tous consistent en un simple "sleep 100" ). Chacun de ces scripts (Parent & enfants) doit tracer sa sortie, naturelle ou provoquée (par un "kill -ABRT" par exemple), dans un fichier log.txt.
 
"Parent" est lancé ainsi: bash Parent &
Lui-même, il fait: bash enfant1 &; bash enfant2 &; .. ; wait; sleep 5; echo "Parent sort" >>log.txt
 
Y a-t-il moyen de signaler à enfant3 (par exemple) de s'arrêter (en traçant sa sortie dans log.txt, donc) sans affecter le reste de la troupe (Parent et autres enfants) ?
Où placer les "traps" ?
 
Le script Parent doit lui aussi tracer sa sortie, même quand il reçoit un "kill -ABRT" par exemple.
 
J'ai constaté que le fait de placer un "trap" dans Parent produit un étrange effet de masquage des signaux par rapports aux fistons, qui ne réagissent plus aux "kill -ABRT".. je me demande s'il est possible de conteôler chacun de ces process *séparément* .. (faire un "kill -ABRT Parent" envoi le signal a tous les process, ce qui n'est pas ce que je veux).
 
Merci de vos idées éclairées.


Message édité par p-seeker23 le 06-09-2013 à 15:00:43
Reply

Marsh Posté le 06-09-2013 à 14:59:56   

Reply

Marsh Posté le 06-09-2013 à 16:00:00    

oui il suffit de connaitre dans une var ou un fichier dans /var/tmp le numero de processus et de tuer celui là spécifiquement
 
 
genre  

Code :
  1. #!/bin/sh
  2. #enfant3
  3. echo $$ >> /var/log/test.$$.procesenfant3
  4. sleep 100
  5. exit 0


 
du coup en lisant ce fichier tu as le numéro du process


Message édité par goblin_rieur le 06-09-2013 à 16:00:24

---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
Reply

Marsh Posté le 06-09-2013 à 16:11:50    

goblin_rieur: le but n'est pas de faire un kill -9 (signal SIGKILL non "attrappable" ), mais d'envoyer un message moins violent qui permette au process de sortir de façon contrôlée (en traçant sa sortie).
Or, quand un trap est placé dans Parent, les "kill -(autre chose que 9)" n'affectent plus les fistons ! Ils les ignorent.

Reply

Marsh Posté le 06-09-2013 à 16:35:50    

les seuls arrêts dans la liste des signaux c'est stop & kill tu peux pas passer outre.. si le but n'est pas un de ces deux cas, il faut le traiter de façon algo via un script tierce.
l'abort n'est pas un arret réel au sens signal


Message édité par goblin_rieur le 06-09-2013 à 16:36:36

---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed