Pourquoi mon piège n'imprime-t-il aucun message de journal?

Ce que je fais est,

trap 'rm -f /path/of/file/fileName.running; echo "TRAPPED & READY";' 1 2 9 15 >> trap.log 

Je n'ai rien compris dans le journal et le file qui aurait dû être supprimé existe toujours, je ne sais pas quel signal pourrait arrêter le script alors qu'il est en cours d'exécution car je ne fais que tuer les servers qui sont utilisés par le script .

NB: Mon travail Cron-Scheduled ne sera pas exécuté si ce file est présent et je ne pense pas avoir manqué un signal possible. où est-ce que je me trompe?

Une partie de votre problème est que vous avez le >> trap.log dehors de la command (cotée) arg, donc tout ce que vous obtenez dans le file trap.log est la sortie de la command trap elle-même – qui n'est rien. Je ne suis pas sûr de ce que vous voulez dire en disant "TRAPPED & READY" lorsque votre script se termine, mais il semble que ce que vous voulez dire est

 trap 'rm -f nom de file ;  echo " message " >> trap.log ' sigspec ...

Et je suis d'accord avec Karlo: si vous «tuez juste les servers qui sont utilisés par le script», alors le script sort très probablement (plutôt que d'être tué par un signal) et vous devriez utiliser la command EXIT (ou, 0 ) sigspec (éventuellement en plus de 1 , 2 et 15 ).

PS Vous n'avez pas besoin d'un point-virgule ( ; ) à la fin de la command trap .

Utilisez EXIT place des numéros de signal.

Le script ci-dessous fonctionne pour moi. J'utilise les constantes.

 > cat test.sh #!/bin/bash trap 'echo trap' EXIT echo 'Program running' sleep 1 > ./test.sh Program running trap 

Depuis la page de manuel bash:

Si un sigspec est EXIT (0), la command arg est exécutée à la sortie du shell. Si une sigspec est DEBUG, la command arg est exécutée avant chaque command simple, pour la command, la command case, la command select, chaque arithmétique pour la command et avant que la première command ne s'exécute dans une fonction shell (voir SHELL GRAMMAR ci-dessus). Reportez-vous à la description de l'option extdebug au shopt embedded pour plus de détails sur son effet sur le piège DEBUG. Si un sigspec est RETURN, la command arg est exécutée chaque fois qu'une fonction shell ou un script exécuté avec le. ou la source builtins termine l'exécution.