cron accodamento bash e script python
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
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 :
- 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 incrontab; ad esempio usa:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
- 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:
- 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
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