cronjob não pode encontrar variáveis de ambiente definidas em .bashrc

1

Eu tenho um requisito muito simples que tentei procurar por solução, mas não consegui nenhuma solução padrão definida. o que eu quero saber é para a minha pergunta abaixo qual é a correct solution.

Pergunta : eu sou obrigado a executar um cronjob (que é um script python) usando o crontab.

usando crontab -e eu adicionei esta linha ao meu arquivo cron:

* * * * * /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1

o script é iniciado, mas está usando variáveis de ambiente internas. eu recebo um erro no arquivo de log que o env vars não está definido?

onde devo definir minhas env vras? Eu até tentei definir em .bashrc , mas ainda o mesmo erro. O cronjob não consegue encontrá-lo.

o que está faltando?

    
por anekix 18.04.2017 / 17:45

2 respostas

1

Escreva um pequeno script bash mypythonscript que consiste em:

#!/bin/bash
set ENVIRONMENT_VARIABLE_1=...
set ENVIRONMENT_VARIABLE_2=...
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1

Torne-o executável:

chmod +x mypythonscript

No crontab substitua a linha por

* * * * * /path/to/mypythonscript
    
por Jos 18.04.2017 / 18:39
1

Em vez de manter as definições de variáveis em dois lugares, envolva sua chamada de programa em um script simples de bash que origina seu ~/.bashrc :

#!/bin/bash
source $HOME/.bashrc
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1  

chmod +x do script e execute-o em crontab .

    
por waltinator 19.04.2017 / 15:56