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 bekommenbekommet wirman 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
Die chrontab editieren:
crontab -e
Ergänzen der bereits bestehenden Einträge um eine Zeile mit dem Inhalt:
*/1 * * * * printenv | grep PATH > /root/printenv.cron
Nach Ablauf einer vollen Minute kann der Eintrag aus der crontab wieder entfernen werden, da er sonst jede volle Minute erneut ausgeführt wird.
Den Inhalt der Datei printenv.cron ausgeben:
cat /root/printenv.cron
PATH=/usr/bin:/bin
Die 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 nunNun die Pfade in der crontab ergänzen. Dazu öffnen wir die crontab editieren und fügen diefdie Pfade vor den Cronjobs hinzu:hinzufügen:
crontab -e
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 folgende Einträge in der crontab hinzufügen:
crontab -e
PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.X/dist-packages/