Cron-Warteschlangen für Bash- und Python-Skripte

Ich versuche gerade, Crontab-Warteschlangen auf meinem Macbook Pro zu verstehen und mich damit vertraut zu machen. Ich habe kürzlich ein Problem gelöst, bei dem mein einfaches Bash-Skript nicht ausgeführt wurde. Es stellte sich heraus, dass ich mein Bash-Skript und seine Ausgabe in den Pfad verschieben musste /Users/myusername/. Vorher hatte ich es in der /Users/myusername/Desktop/. Dieser Beitrag ist hier zu finden – https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

Meine Frage: Müssen alle meine Bash- und Python-Skripte /Users/myusernameimmer im Pfad untergebracht werden? Gibt es keine Problemumgehung?

Antworten (2)

Frage:

Meine Frage: Müssen alle meine Bash- und Python-Skripte /Users/myusernameimmer im Pfad untergebracht werden? Gibt es keine Problemumgehung?

Antworten:

Nein. Sie können Ihre Bash- und Python-Skripte überall platzieren, wo Sie möchten. Es gibt jedoch zusätzliche Anforderungen :

  1. Ihre cronJobs werden in einer anderen UMGEBUNG ausgeführt , als wenn Sie sie ausführen. zB $PATH. Daher sollten Sie eine vollständige Pfadangabe für die Angabe Ihrer Skripte im crontab; verwenden Sie zum Beispiel :
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. Auf meinem Mac (Catalina) habe ich festgestellt, dass es notwendig ist, cron. YMMV auf einer anderen Betriebssystemversion. Hier ist wie:

System Preferences -> Security & Privacy -> Privacy Reiter:

Geben Sie hier die Bildbeschreibung ein

  1. Zumindest beim Debuggen Ihres cronJobs sollten Sie erwägen, eventuelle Fehlermeldungen ( stderr) in eine Datei umzuleiten - sonst landen sie in /dev/nulleiner nicht hilfreichen Datei! Weiter mit obigem Beispiel:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1

Möglicherweise müssen Sie nur sicherstellen, dass Sie den Elementen Berechtigungen erteilen und für alles vollständige Pfade verwenden. Nur weil ein Skript ausgeführt wird, wenn Sie sich in einer interaktiven Shell befinden, heißt das nicht, dass es in einer eingeschränkten Shell korrekt ist.

Hier sind super Debugging-Tipps zu einer aktuellen Frage.