bonjour
Qu a une idée svp comment je peut vérifier si mon script *.sh il est entrain d’être exécuter ou il n'est pas
aussi comment vérifier ou lire historique d’exécution d'un script SH
merci pour vos aides
bonjour
Qu a une idée svp comment je peut vérifier si mon script *.sh il est entrain d’être exécuter ou il n'est pas
aussi comment vérifier ou lire historique d’exécution d'un script SH
merci pour vos aides
voir si il tourne : man ps & man grep
typique
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps -ef | grep -i scripname
une bien meilleur pratique
la présence du pid indique donc que le script tourne et son heure de lancement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #!/usr/bin/env bash touch /var/run/$0.$(date "+%Y%m%d-%H%M%S").$$.pid ....#contenu du script rm /var/run/$0.$(date "+%Y%m%d").$$.pid && exit 0
si tu veux voir son exécution tu peux activer le mode debug de bash
quand il s’exécute tu peux suivre en live via
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #!/usr/bin/env bash touch /var/run/$0.$(date "+%Y%m%d-%H%M%S").$$.pid set -x ( ....#contenu du script ) > /var/log/$0.$(date "+%Y%m%d-%H%M%S").log set +x rm /var/run/$0.$(date "+%Y%m%d").$$.pid && exit 0ou le lire plus tard
Code : Sélectionner tout - Visualiser dans une fenêtre à part tail -F /var/log/$0.$(date "+%Y%m%d-%H%M%S").log
Bonjour,
touch n'est pas fait pour créer des fichiers.
il le fait, mais son but premier est de modifier les dates des fichiers.
pour créer un fichier sans commande externe, faites une simple redirection : > fichier.
pourquoi créer un sous-shell avec les parenthèses ?
des accolades groupent aussi les sorties, mais sans créer de sous-shell.
attention, le fichier "pid" n'a pas le même format entre sa création du script, et sa suppression.
de plus, la date peut avoir changé entre le début et la fin du script; la date devrait être stockée dans un variable.
et puis, je ne suis pas fan de /usr/bin/env bash : si tu ne sais pas où est bash, peux-tu être sûr de l'emplacement de env ?
salut,
l'utilisation d'un verrou peut être une solution (c'est le même principe qu'expliqué plus haut), du coup il suffit de tester si le verrou (fichier ou mieux, répertoire) est présent pour être assuré que le programme est en cours d'exécution (et est tout seul à l'être), reste qu'il faut l'implémenter correctement http://mywiki.wooledge.org/BashFAQ/045
Très intéressant l'explication du lien BufferBob.
Pour le coup, je ne faisais pas comme il faut puisque je testais la présence d'un fichier.
merci.
c'est bien sur qu'un schéma de principemais oui tes remarques sont bonne sur l'ensemble
![]()
sauf que > fichier n'est pas compréhensible par tout lecteur. et ne marche pas universellement sur tout unix-like contrairement à touch
l'emplacement de env est normalement figé et appeler directement le shell sans passer par env fait partie des bad-practicesmême si j'aime pas trop non plus
![]()
La bonne façon n'est elle pas ?sauf que > fichier n'est pas compréhensible par tout lecteur. et ne marche pas universellement sur tout unix-like contrairement à touch
Je crois que c'est universel contrairement à
Code : Sélectionner tout - Visualiser dans une fenêtre à part : > fichier
qui pourrait ne pas passer partout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part > fichier
je veux les noms ! ça dépend du shell, pas de l'OS.ne marche pas universellement sur tout unix-like
effectivement, tcsh ne reconnaît pas > fichier, mais bien : > fichier.
"normalement", comme "presque partout" ?l'emplacement de env est normalement figé
j'ai lu exactement le contraire. :/appeler directement le shell sans passer par env fait partie des bad-practices
Partager