cron kolejkowanie skryptów bash i python
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
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 :
- 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 wcrontab; na przykład użyj:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
- 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:
- 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
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