Configuration du journal pour un script bash

J’ai un script bash que je veux qu’il exécute en tant que démon car il vérifie si une condition fonctionne et dort pendant un certain temps et que le cycle se répète.

I demonize the script as : nohup myScript.sh & 

Comment puis-je configurer la journalisation pour le même script car il a les mêmes commandes echo qui impriment certaines instructions et comment s’assurer que j’ai le pid du script si je veux le tuer plus tard.

Quelqu’un peut-il suggérer comment je peux atteindre le même

Si vous regardez le chapitre sur la redirection d’E / S dans le Guide avancé de Bash-Scripting , vous voyez que vous pouvez redirect toutes les sorties vers un fichier en faisant quelque chose comme, en haut de votre script:

 exec 2>&1 exec 1>>out.log 

La première ligne redirige stderr vers stdout et la deuxième ligne ajoute stdout à out.log. Si vous faites cela, vous pouvez utiliser echo pour écrire des messages spécifiques dans le fichier journal, et la sortie de toutes les commandes, que vous n’avez pas désactivées, sera également écrite dans le fichier journal.

Bash a beaucoup de variables spéciales, vous pouvez en avoir un aperçu dans la carte de référence Variables Shell spéciales . L’un d’entre eux est $$ , qui contient les scripts PID. Pour enregistrer cela, vous pouvez effectuer les opérations suivantes:

 echo $$ > ${0}.pid 

Cela créera un nom de fichier .pid , contenant le PID du script.

Placez la ligne suivante au début de votre script. Il enregistre le pid pour plus tard:

 echo $$ > myScript.pid 

Commencez votre script de capture de sortie pour la journalisation (à partir de l’exemple de la page de manuel nohup ):

 nohup myScript.sh > myScript.log & 

Tuez le script plus tard en:

 kill -9 `cat myScript.pid` 

Exemple simple de myScript.sh:

 #!/bin/bash echo $$ > myScript.pid while :; do echo "Hello"; sleep 1; done