Terminaison innatendue de script [KSH] [AIX] - Shell/Batch - Programmation
Marsh Posté le 14-01-2012 à 20:54:57
rivalgro a écrit : Un script ksh sur AIX 5.3 se termine de temps en temps de manière subite et inattendue.
|
Salut
Tu dis que l'echo "run_child.sh is terminated" n'est pas exécuté. Mais le script s'est-il arrêté ou est-il toujours en cours ?
S'il est toujours en cours ça veut dire qu'il est toujours sur "run_child.sh".
S'il s'est arrêté peut-être est-ce parce qu'il est passé par l'exit du "trap"...
rivalgro a écrit : Quelqu'un saurait ce qu'il peut se passer car je suis sec, j'ai fait le tour des possibilités... |
Rajoute un echo dans le trap. Tu verras bien s'il passe par là...
Marsh Posté le 15-01-2012 à 16:13:45
^ je plussoie
Peut-être qu'avec truss tu peux voir si le script reçoit un signal ?
Marsh Posté le 17-01-2012 à 11:07:11
pas besoin de rajouter d'echo dans le trap, puisque dans le trap il y adéjà le rm qui n'est pas executé. Et le script n'est plus en execution, il y a terminaison du père et fils.
Comment pourrais je tracer sachant que c'est du mode agent (le script est lancé par un agent de supervision à intervalle régulier...
Un lancement de type script.sh | truss -p $$ > /tmp/truss.log 2>&1 ... ?
Marsh Posté le 17-01-2012 à 13:21:02
Salut
tu peux envisager de lancer le truss en tâche de fond, avec un sudo, avant l'exécution du sous-script .sh.
Déjà voir ce que le parent reçoit comme instruction de fin (sigkill ou un autre signal pouvant être attrapé)
Marsh Posté le 19-01-2012 à 08:31:47
j'ai une trace truss lors d'un plantage...
Quelqu'un peut m'aider à analyser cela ?
Voilà les dernières ligne de la trace truss
Code :
|
couplée aux dernières lignes de la trace set -x
Code :
|
Marsh Posté le 19-01-2012 à 10:32:16
en gros le process est killé au moment de la sortie du fils...
comment savoir d'où vient cet ordre car il est clair qu'il ne vient pas du script...
Marsh Posté le 19-01-2012 à 17:06:26
J'ai l'impression qu'il y a un script externe qui envoie un SIGKILL au ksh parent.
Existe-t-il un paramètre définissant une durée maximale d'exécution par l'application qui lance le script (trap snmp, ordonnanceur, etc.) ?
Constates-tu une durée constante d'exécution avant que le tout soit killé ?
Marsh Posté le 20-01-2012 à 09:40:09
Il y a une fonction interne au script père qui gère un timeout avec SIGKILL au bout de 300 secondes, mais 1) j'ai vérifié qu'elle ne s'enclenchait pas, 2) le script ne dure quelques secondes avant de recevoir ce signal. J'ai l'impression que c'est au niveau système que cela se passe...
la ligne juste avant le kill ne mettrait pas la puce à l'oreille ?
kwaitpid(0x2FF20E90, -1, 6, 0x00000000, 0x00000000) Err#82 ERESTART
Marsh Posté le 20-01-2012 à 11:02:37
Pour moi ça signifie que le shell attend le retour du fils (signal child) mais que cette attente est interrompue subitement (par le signal 9).
Le script père en question, est-il possible de le tracer ?
Marsh Posté le 20-01-2012 à 14:10:34
il est déjà tracé, cf la trace truss...
tu parles peu être du processus qui le lance ?
Marsh Posté le 13-01-2012 à 11:34:09
Un script ksh sur AIX 5.3 se termine de temps en temps de manière subite et inattendue.
Le script lance un shell fils comme suit
Code :
de temps en temps, l'echo et les next instructions ne sont pas exécutées.
en set -x, on peut voir que la dernière instruction exécutée est
pourtant en traçant run_child.sh, il semble aller au bout (j'ai mis un echo juste avant sa dernière instruction d'exit 0), et on peut voir le resultat de cet echo dans la trace...
Quelqu'un saurait ce qu'il peut se passer car je suis sec, j'ai fait le tour des possibilités...