Frage

Dank für die Hilfe meiner Cronjobs Einstellung crontab hat wirklich eine Goldmine für mich.

Leider habe ich ein Problem, und habe keine Ahnung, was so überhaupt, was es sein könnte ... im Grunde ein Job nicht, während die Nachbarn Arbeitsplätze tun. Ich werde erklären,


Das ist meine crontabs Jobliste:

  

* / 10 * * * * Python /webapps/foo/manage.py fetch_articles

     

* / 10 * * * * Python /webapps/bar/manage.py fetch_books

Ich schrieb sie, wie sie in einer Datei sind und gespeichert sie mit crontab / path / to / file.

Checked mit crontab -l und die Arbeitsplätze sind.


Das Merkwürdige ist, dass 1 davon normalerweise alle 10 Minuten führt ... aber der andere nicht. Ich habe versucht, manuell in dem Befehl eingeben, und es funktioniert gut, ohne ein Problem.


Hat jemand Vorschläge?

Hilfe wäre sehr willkommen, Danke Jungs.


Update:

Ich habe in den System-Log-Dateien und ich fand diese:

  

5. März 02.50.01 localhost CRON [21652]: (root) CMD (Python /webapps/foo/manage.py fetch_books)

Heisst das crontab den Job in Ordnung ruft an?


Vielen Dank für Ihre Antworten Jungs!


IT FIXED! Vielen Dank jeder !!

Das Problem war, dass das Skript leise ausgefallen ist, ich glaube, es ist an der PYTHON_PATH aufgrund ändert sich aufgrund wo das Skript aufgerufen wird aus ... ich ganz sicher bin.

War es hilfreich?

Lösung

Cron läuft immer in einer Umgebung anders, was Sie denken: -)

Ich habe immer meine Cronjobs einrichten wie:

*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1

, um sicherzustellen, dass es etwas protokolliert, dass ich sehen kann.

Dies wird verengt Ihr Problem auf entweder:

  • cron, wenn die temporäre Datei nicht angezeigt; oder
  • Ihr Skript, wenn es angezeigt wird.

Und im letzteren Fall, hoffentlich wird es einige ausgegeben werden Sie debuggen können. Wenn nicht, setzen Ausgang dort.

Eine Möglichkeit, das zu tun, ist zu setzen:

set -x

an der Spitze des Skripts, das alle Linien verursacht Ausgabe vor der Ausführung sein. Alle meine Skripte sind in der Regel zu starten:

#!/bin/bash
#set -x

so ich, dass zweite Zeile nur uncomment kann während des Debuggens.

Andere Tipps

Von der crontab manpage:

  

BUGS          Obwohl cron erfordert, dass jeder Eintrag in einem crontab Ende in einem   Newline-Zeichen ,          weder der Befehl crontab noch die Cron-Daemon dies erkennen   Error. Stattdessen,          die crontab erscheint normalerweise zu laden. Doch der Befehl   wird nie laufen.           Die beste Wahl ist, um sicherzustellen, dass Ihre crontab eine leere Zeile hat bei   das Ende.

(Hervorhebung von mir).

Ich denke ~ unutbu Antwort ist wahrscheinlich richtig, wenn es die zweite Aufgabe ist, die nicht ausgeführt wird.

Doch eine andere Sache zu prüfen ist, ob /webapps/bar/manage.py auf alle Ressourcen exklusiven Zugriff erfordert, zB Netzwerk-Sockets / tempfiles usw. Da Sie zwei Prozesse zur gleichen Zeit beginnen, können Sie eine Race-Bedingung auslösen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top