scripts bash e python de fila cron
No momento, estou procurando entender e ficar confortável com as filas do crontab no meu macbook pro. Recentemente, resolvi um problema em que meu script bash simples não era executado. Acontece que eu tive que mover meu script bash e sua saída no /Users/myusername/caminho. Antes que eu tivesse no /Users/myusername/Desktop/. Esta postagem pode ser encontrada aqui -https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897
Minha pergunta: todos os meus scripts bash e python precisam estar /Users/myusernamesempre hospedados no caminho? Não há solução alternativa?
Respostas
Questão:
Minha pergunta: todos os meus scripts bash e python precisam estar
/Users/myusernamesempre hospedados no caminho? Não há solução alternativa?
Responda:
Não. Você pode localizar seus scripts bash e python em qualquer lugar que desejar. No entanto, existem requisitos adicionais :
- Seus
crontrabalhos são executados com um AMBIENTE diferente de quando você os executa; por exemplo$PATH. Conseqüentemente, você deve usar uma especificação de caminho completa para especificar seus scripts nocrontab; por exemplo, use:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
- No meu Mac (Catalina), achei necessário conceder privilégios de "Full Disk Access" para
cron. YMMV em uma versão diferente do sistema operacional. Veja como:
System Preferences -> Security & Privacy -> Privacy guia:
- Ao menos durante a depuração de seu
crontrabalho, você deve considerar redirecionar quaisquer mensagens de erro (stderr) para um arquivo - caso contrário, elas acabarão, o/dev/nullque não é útil! Continuando com o exemplo acima:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
Você só precisa ter certeza de conceder permissões aos elementos e usar caminhos completos para tudo. Só porque um script é executado quando você está em um shell interativo, não significa que eles estejam corretos em um shell limitado.
Aqui estão dicas de super depuração para uma questão recente.
- cron e "comando não encontrado"
- cronjobs não funcionam
- Obtendo um erro de comando desconhecido ao tentar executar o script via cron