Skip to main content

Scripte per Cronjob starten

Falls durch einen Cronjob gestartete Scripte nicht richtig ausgeführt werden oder andere Ergebnisse liefern als erwartet kann das an fehlenden Pfaden (PATH) in den Umgebungsvariablen des Cron liegen. Diese sind beim Ausführen von der Shell andere als bei der Ausführung durch Cron. Ein Script kann somit in der Shell ordnungsgemäß arbeiten aber Probleme beim Ausführen durch Cron haben.

Vergleich der Pfade von Shell und Cron

Pfade in der Shell

In der Shell bekommen wir alle Umgebungsvariablen mit dem Befehl printenv:

printenv | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Pfade
von

Cron

DiesenDie Befehlchrontab nutzen wir nun um eine Ausgabe durch Cron zu erreichen:editieren:

crontab -e

WirErgänzen ergänzender bereits bestehendebestehenden Einträge um eine Zeile mit dem Inhalt:

*/1 * * * * printenv | grep PATH > /root/printenv.cron

Nach Ablauf einer vollen Minute könnenkann wir dender Eintrag aus der crontab wieder entfernen,entfernen werden, da er sonst jede volle Minute erneut ausgeführt wird.

Wir können uns nun denDen Inhalt der Datei printenv.cron ansehen:ausgeben:

cat /root/printenv.cron
PATH=/usr/bin:/bin

Wie man sehen kann, sind dieDie Pfade des Cron sind nur auf /usr/bin und /bin gesetzt.

Ergänzen der Pfade für shell-Scripte in der crontab

Wir können nun die Pfade in der crontab ergänzen. Dazu öffnen wir die crontab und fügen die Pfade vor den Cronjobs hinzu:

crontab 
-e
PATH=
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ergänzen der Einträge für Python-Scripte

 in der crontab

Für die Ausführung von Python-Scripten fügen wir folgende Einträge hinzu:in der crontab hinzufügen:

Für
crontab Phyton-e
3.7:

PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.X/dist-packages/

PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/dist-packages/

Für Python 2.7


PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.2/dist-packages/