2009-05-28 33 views
9

Wenn ich einen Cron-Job habe, der alle 10 Minuten ausgeführt wird und aus irgendeinem Grund 12 Minuten dauert, um den Job auszuführen, wird Cron eine andere Instanz meines Codes starten, während der vorherige noch läuft? Wenn ja, wie kannst du das unter Linux verhindern?Einen Cron-Job ausführen

Antwort

10

Ja, wird es.

Sie sollten Ihr Programm erstellen eine .pid-Datei (zum Beispiel in/var/run /). Wenn es gestartet wird, sollte es überprüfen, ob eine solche Datei bereits existiert und wenn ja, beenden.

Welches Programm/Skript laufen Sie?

+0

ich einen PHP-Skript leite Mail zu senden. –

+0

Etwas wie das wird den Trick dann tun http://www.dreamincode.net/code/snippet2407.htm – MartinodF

+0

Können Sie uns ein Snipet zeigen, wie dies zu tun ist? – oneofakind

3

Ja. Cron wird einen Prozess in dem geplanten Intervall auslösen, unabhängig davon, ob ein vorheriger Vorgang nicht abgeschlossen wurde.

Sie können touch eine Datei, wie in einer anderen Antwort angegeben, und überprüfen Sie auf seine Existenz, bevor Sie Ihren Prozess einschalten.

Oder Sie könnten die Prozessliste prüfen, um zu sehen, ob eine „Instanz“ bereits ausgeführt wird:

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