Cron-Warteschlangen-Bash- und Python-Skripte

Sep 29 2020

Ich versuche derzeit, 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 werden konnte. Es stellte sich heraus, dass ich mein Bash-Skript und seine Ausgabe in den /Users/myusername/Pfad verschieben musste. Bevor ich es in der hatte /Users/myusername/Desktop/. Diesen Beitrag finden Sie hier -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 gespeichert sein? Gibt es keine Problemumgehung?

Antworten

3 Seamus Sep 30 2020 at 13:36

Frage:

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

Antworten:

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

  1. Ihre cronJobs werden mit einer anderen UMWELT ausgeführt als bei der Ausführung. zB $PATH. Folglich sollten Sie eine vollständige Pfadspezifikation verwenden, um Ihre Skripte in anzugeben 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, "Full Disk Access" -Berechtigungen zu erteilen cron. YMMV auf einer anderen Betriebssystemversion. Hier ist wie:

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

  1. Zumindest beim Debuggen Ihres cronJobs sollten Sie in Betracht ziehen, Fehlermeldungen ( stderr) in eine Datei umzuleiten - andernfalls werden sie angezeigt, /dev/nullwas nicht hilfreich ist! Fahren Sie mit dem obigen Beispiel fort:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

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, bedeutet dies nicht, dass sie in einer eingeschränkten Shell korrekt sind.

Hier finden Sie Tipps zum Super-Debuggen einer aktuellen Frage.

  • cron und "Befehl nicht gefunden"
  • Cronjobs laufen nicht
  • Unbekannter Befehlsfehler beim Versuch, ein Skript über cron auszuführen