Eu tive um problema ao executar um script do crontab. Após algumas pesquisas, entendi que o problema era porque o parâmetro PATH não inclui / sbin.
Eu olhei o que ele inclui no / etc / crontab:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Como teste - tarefa cron simples para imprimir a variável PATH:
* * * * * echo $PATH &> /root/TMP.log
a saída é:
cat /root/TMP.log
/usr/bin:/bin
Eu não entendo esse comportamento ... Como faço para definir a variável PATH ..? Ou melhor - como adicionar caminhos a ele?
bash -lc
não ajuda. Por enquanto, sou bom em configurar o PATH manualmente, mas se eu instalar alguns scripts, quero que eles sejam reconhecidos nos cronjobs sem especificar caminhos completos. Tenho certeza de que é possível alguma forma, ebash -lc
está a caminho a uma solução :)Se você precisar de PATHs padrão do sistema e outras variáveis ENV (definidas em /etc/profile.d), basta colocar o seguinte:
fonte
É possível definir o PATH (ou outros parâmetros) na linha cronjob ou em uma única linha. Mas você não é capaz de usar a expansão do shell como
PATH=$PATH:/usr/local/bin
. Mas o til é permitido para atalhos do diretório inicial.Dos livros:
Veja
man 5 crontab
para mais informações.Portanto, isso deve funcionar:
fonte
Eu tive o mesmo problema e encontrei outra maneira de executar meu script no crontab. Eu acho que a maneira mais fácil de executar o seu programa é criar um script que possa entrar no diretório do seu programa. Em seguida, chame seu programa nesse script.
Este é um exemplo de script (nome do script = launcher.sh):
então, torne seu script executável:
E, finalmente, adicione seu script ao crontab
e adicione esta linha no final:
(Defino o programa para ser executado a cada reinicialização)
fonte