Executa tarefas cron no ambiente python pretendido?

3
  • eu tenho usuários root e user1
  • Todos os meus scripts python foram criado por user1
  • Eu criei um arquivo bash que precisa ser automatizado. O arquivo bash chama meus scripts python
  • Eu adicionei minha chamada de bash ao arquivo cron

No entanto, meu ambiente python para root é não o mesmo que para user1 (versões diferentes, pacotes de bibliotecas, etc, etc). Então, quando o cron arranca, ele me dá erros de python como "biblioteca não encontrada" porque o ambiente root está sendo usado.

Como posso garantir que meus comandos do cron executem meus scripts python sob o ambiente user1 python e não root ?

Note que eu já tentei usar alguma variação de su no meu arquivo cron, mas ele sempre pede uma senha e eu preciso que isso seja um processo totalmente automatizado.

    
por Unknown Coder 27.07.2018 / 16:47

1 resposta

3

Você já tentou usar sudo su ?

sudo su -l "user1" -c "/path/to/bashscript.sh"

Alternativamente, você pode definir o ambiente necessário no topo do seu crontab:

SHELL=/usr/local/bin/bash
PATH=<user1 path>
LOGNAME=user1
USER=user1
HOME=/home/user1

E, se necessário, forneça seu (s) arquivo (s) de configuração do usuário1 antes de executar o arquivo bash:

0 12 * * * * . /home/user1/.bash_profile; /path/to/bashscript.sh
    
por 27.07.2018 / 17:05