2009-05-28 14 views
9

Si j'ai un travail cron qui s'exécute toutes les 10 minutes et pour une raison quelconque cela prend 12 minutes pour exécuter le travail, cron démarrera une autre instance de mon code alors que la précédente est toujours en cours d'exécution? Si oui, comment pouvez-vous empêcher cela sur Linux?Exécution d'un travail Cron

Répondre

10

Oui, ce sera le cas.

Vous devriez faire en sorte que votre programme crée un fichier .pid (par exemple dans/var/run /). Quand il commence, il devrait vérifier si un tel fichier existe déjà et si c'est le cas, quittez.

Quel programme/script utilisez-vous?

+0

Je suis en cours d'exécution d'un script php pour envoyer du courrier. –

+0

Quelque chose comme ça va faire l'affaire puis http://www.dreamincode.net/code/snippet2407.htm – MartinodF

+0

Pouvez-vous nous montrer un snipet sur la façon de faire cela? – oneofakind

3

Oui. Cron déclenche un processus à l'intervalle planifié, même si un précédent n'a pas été terminé.

Vous pouvez touch un fichier, comme indiqué dans une autre réponse, et vérifier son existence avant d'engager votre processus.

Ou vous pouvez examiner la liste des processus pour voir si une « instance » est déjà en cours d'exécution:

ps -ef | grep *your_script_name* | grep -v grep | wc -l 
Questions connexes