2017-05-15 3 views
0

Derzeit habe ich ein Python-Skript unter Linux geplant, indem ich Folgendes hinzufüge: */10 * * * * /file/testscripts/test_script.py bis crontab -e.Python + Linux: Wie wird bestimmt, Cron Job ist geplant?

Es lief nicht nach 10 Minuten, also schrieb ich etwas Code, um die aktuelle Zeit dort zu schreiben, wurde aber auch nicht aktualisiert.

Was könnte das Problem sein? Und wie kann ich feststellen, dass mein Python-Skript für einen Cron-Job ordnungsgemäß geplant wurde?

Voraus Danke und akzeptiert/upvote

+0

Haben Sie die Protokolle überprüft? Abhängig von der Distribution könnten sie sich in '/ etc/var/cron.log' oder einem Teil von'/var/log/kern.log' befinden oder anderswo. Haben Sie beim Entwickeln des Skripts eine virtuelle Umgebung verwendet? – FamousJameous

+0

@FamousJameous Gefunden '/ var/log/kern.log' und öffnete es über' vi', aber nichts ist dort geschrieben. Und, ja, das Skript wird auf einer virtuellen Instanz platziert. –

+0

Entschuldigung, ich meinte virtuelle Umgebung wie in ['virtualenv'] (https://virtualenv.pypa.io/en/stable/). Es wird verwendet, um separate Python-Umgebungen auf demselben Computer zu erstellen. Welche Distribution läuft die Maschine? Könntest du auch klarstellen, was du meinst "Ich habe einen Code geschrieben, um die aktuelle Zeit dort zu schreiben"? Wo wurde der Code geschrieben (stdout, eine Datei ...)? – FamousJameous

Antwort

-1

mit 10 * * * * yourscript -l Ihr Skript enthalten ist name.Then zu überprüfen, ob crontab Versuchen zu beantworten. Dann können Sie Crontab-Protokolle überprüfen.

+0

Glauben 'crontab -l' gibt nur aus, was auf' crontab -e' geschrieben ist und bestätigt nicht unbedingt, dass ein Cron-Job ordnungsgemäß geplant wurde. –

1

Es gibt viele Dinge, die Sie tun können:

  • Versuchen vollständigen Pfad zum Python-Interpreter sowie den Namen des Skripts zu setzen.
  • Rohr stdout/stderr in eine Protokolldatei und Druck etwas aus: ... test_script.py > /tmp/pythonCron.log 2>&1
  • Ist der cron-Dienst aktiviert und läuft?

Wie FamousJameous wies darauf hin, wenn der Job gestartet wurde, sollten Sie einige Zeilen in/var/log/syslog:

May 15 06:29:00 xyz CRON[9368]: (www-user) CMD (python ... 
+0

@MariuceMeyer Ist '/ usr/bin/python' nicht der vollständige Pfad zum Python-Interpreter? Und könnten Sie 'Pipe stdout/stderr zu einer Log-Datei' ausarbeiten? Was würde ich für das Python-Skript implementieren? Und wie kann ich überprüfen, ob der Cron-Service aktiviert und ausgeführt wird? Ich habe den Befehl versucht: 'ps -ef | grep cron | grep -v grep' und es zeigte: 'root 1234 1 0 May10?**: **: **/usr/sbin/cron -f. Und ich habe das Syslog überprüft und es zeigte: –

+0

'15. Mai 18:00:01 linuxbox CRON [13824]: (linuxuser) CMD (/ usr/bin/python /file/testscripts/test_script.py) 15 Mai 18:00 : 02 linuxbox CRON [13823]: (CRON) info (Kein MTA installiert, Ausgabe verwerfen) ' –

+0

Ihr Cron Job wurde ausgeführt, etwas wurde ausgedruckt oder es gab einen Fehler. Sie müssen also einfach den stdout/stderr in die Protokolldatei (innerhalb von crontab) pipen, wie in meiner Antwort beschrieben: '... test_script.py> /tmp/pythonCron.log 2> & 1'. –