cron accodamento bash e script python

Sep 29 2020

Al momento sto cercando di capire e prendere confidenza con le code crontab sul mio macbook pro. Recentemente ho risolto un problema in cui il mio semplice script bash non veniva eseguito. Si scopre che ho dovuto spostare il mio script bash e il suo output nel /Users/myusername/percorso. Prima che lo avessi in /Users/myusername/Desktop/. Questo post può essere trovato qui -https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

La mia domanda: tutti i miei script bash e python devono essere sempre ospitati in /Users/myusernamepath? Non ci sono soluzioni alternative?

Risposte

3 Seamus Sep 30 2020 at 13:36

Domanda:

La mia domanda: tutti i miei script bash e python devono essere sempre ospitati in /Users/myusernamepath? Non ci sono soluzioni alternative?

Risposta:

No. Puoi localizzare i tuoi script bash e python ovunque tu voglia. Tuttavia, ci sono requisiti aggiuntivi :

  1. I tuoi cronlavori vengono eseguiti con un AMBIENTE diverso rispetto a quando li esegui; ad es $PATH. Di conseguenza, è necessario utilizzare una specifica del percorso completo per specificare gli script in crontab; ad esempio usa:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. Sul mio Mac (Catalina) ho ritenuto necessario dare i privilegi di "Accesso completo al disco" cron. YMMV su una versione del sistema operativo diversa. Ecco come:

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

  1. Almeno durante il debug del tuo cronlavoro, dovresti considerare di reindirizzare tutti i messaggi di errore ( stderr) a un file, altrimenti finiscono in /dev/nullcosa non utile! Continuando con l'esempio sopra:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

Potrebbe essere necessario essere sicuri di concedere le autorizzazioni agli elementi e utilizzare percorsi completi per tutto. Solo perché uno script viene eseguito quando ci si trova in una shell interattiva, non significa che siano corretti in una shell limitata.

Ecco alcuni ottimi suggerimenti per il debug su una domanda recente.

  • cron e "comando non trovato"
  • i cronjob non vengono eseguiti
  • Ottenere un errore di comando sconosciuto quando si tenta di eseguire lo script tramite cron