-
Exécution de programme
Je réalise un programme Perl qui va être déclenché par un CRON toutes les 2 min.
Je voudrais être sur que le programme ne s'exécute pas alors qu'il est peut être encore lancé.
Je le fais déjà en plaçant un fichier "tampon" dans mon /tmp/ que je pose au début et que je retire à la fin de l'exécution du programme.
Il y a aussi la possibilité de faire un `ps uax` pour vérifier si je trouve le programme dans la liste.
Mais je trouve ces 2 solutions un peu limite, dans le premier cas, le fichier tampon risque de me faire chauffer le disque dur à la longue :) (CRON toutes les 2min) et le second, le ps uax, je trouve ça limite ...
Existerait il une primitive ou un module permettant d'effectuer cette vérification ? ou une idée pour faire cela différemment ?
Sinon, je m'en tiendrai au `ps uax`, je sais pas trop si c'est vraiment bon pour un disque dur de se faire harceler toutes les 2 minutes de la sorte.
-
La meilleure solution, c'est le fichier de lock (dans le /tmp, ou dans /var/lock). C'est plus sur.
Et A mon avis, ce n'est pas du harcèlement de disque. Je pense que la simple lecture de ton fichier perl coutera plus cher en temps accès disque que l'écriture/unlink de ton fichier. D'une par un disque dur supporte beaucoup plus d'écriture à la minute que ça (dieu merci), et d'autre part, il est possible que les opérations ne soient faites qu'en mémoire.
-
"La meilleure solution, c'est le fichier de lock (dans le /tmp, ou dans /var/lock). C'est plus sur."
Je ne vois pas bien la différence par rapport à ce que je fais ?
Ou alors lors de l'exécution d'un programme, un fichier de lock se créé automatiquement ? (désolé pour mon manque de culture linux :()
Le cron va s'exécuter toutes les 2 mins sur le script.
Le script ne prend pas plus de 1 à 3 secondes d'exécution, mais comme dans le script, je fais un wget vers une url et un snmpwalk, si la machine prend du temps à répondre c'est risqué ? ou alors le plus sur serait un timeout à 10 sec quoi qu'il arrive, j'éviterais ainsi le test de présence du fichier ?
Je crains plus sur de vieux disques durs en fait qui ne bouge quasiment plus, ils n'écrivent rien ... tout se fait en mémoire, type routeur ou autre, ou via des liens nfs, ajouter ce petit jeton, me fiche les jetons ;).