cron kolejkowanie skryptów bash i python

Sep 29 2020

Obecnie chcę zrozumieć i poczuć się komfortowo z kolejkami crontab na moim Macbooku Pro. Niedawno rozwiązałem problem polegający na tym, że mój prosty skrypt bash nie mógł się wykonać. Okazuje się, że musiałem przenieść mój skrypt bash i jego dane wyjściowe w /Users/myusername/ścieżce. Zanim miałem to w /Users/myusername/Desktop/. Ten post można znaleźć tutaj -https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

Moje pytanie: czy wszystkie moje skrypty bash i python muszą zawsze znajdować się w /Users/myusernamepath? Czy nie ma obejścia?

Odpowiedzi

3 Seamus Sep 30 2020 at 13:36

Pytanie:

Moje pytanie: czy wszystkie moje skrypty bash i python muszą zawsze znajdować się w /Users/myusernamepath? Czy nie ma obejścia?

Odpowiedź:

Nie. Skrypty bash i python można znaleźć w dowolnym miejscu. Istnieją jednak dodatkowe wymagania :

  1. Twoje cronzadania działają w innym ŚRODOWISKU niż wtedy, gdy je uruchamiasz; np $PATH. W związku z tym należy użyć pełnej specyfikacji ścieżki do określenia skryptów w crontab; na przykład użyj:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. Na moim Macu (Catalina) stwierdziłem, że konieczne jest nadanie uprawnień „pełnego dostępu do dysku” cron. YMMV w innej wersji systemu operacyjnego. Oto jak:

System Preferences -> Security & Privacy -> Privacy zakładka:

  1. Przynajmniej podczas debugowania swoje cronzadanie, należy rozważyć skierowanie żadnych komunikatów o błędach ( stderr) w pliku - w przeciwnym razie ich likwidacji w /dev/nullktórych nie jest pomocne! Kontynuując powyższy przykład:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

Konieczne może być tylko upewnienie się, że przyznajesz uprawnienia elementom i używasz pełnych ścieżek do wszystkiego. To, że skrypt działa, gdy jesteś w powłoce interaktywnej, nie oznacza, że ​​jest on poprawny w powłoce ograniczonej.

Oto super wskazówki dotyczące debugowania dotyczące ostatniego pytania.

  • cron i „nie znaleziono polecenia”
  • cronjobs nie działają
  • Błąd nieznanego polecenia podczas próby uruchomienia skryptu przez cron