Sintaxe Crontab; Vários comandos

Sintaxe Crontab; Vários comandos

Gostaria de obter a seguinte cadeia de comandos como um cronjob:

* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py

Funciona no console, mas não recebo nenhuma saída do cronjob.

eu seguiessesugestão, substituindo-o por

* * * * * env > /tmp/env.output

para descobrir se env é diferente. Não consegui encontrar nada relevante além de PATH ser diferente. Então eu configurei

PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py

e ainda não funcionou. Finalmente eu substituí-lo por

PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
* * * * * env > /tmp/env.output

e dessa vez nem peguei o env.outputarquivo. Portanto, acho que há algo errado com minha sintaxe - mas parece exatamente com as sugestões de vários comandos que encontrei online.

O que está acontecendo aqui? Se não for óbvio, o que posso fazer para rastrear o erro?

PATH=/usr/local/anaconda2/envs/myenv3/bin:~/.conda:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

out.err:

/bin/sh: 6: /usr/local/anaconda2/envs/myenv3/bin/activate: [[: not found
/bin/sh: 15: /usr/local/anaconda2/envs/myenv3/bin/activate: [[: not found
/bin/sh: 17: /usr/local/anaconda2/envs/myenv3/bin/activate: [[: not found
Only bash and zsh are supported

Responder1

No Ubuntu, por padrão, o crondaemon executa todos os trabalhos usando sh( dash) shell e dashnão possui sourcebuilt-in.

Você precisa usar o método POSIX, ou seja .:

* * * * * . activate myenv3 && cd ~/foo/bar && python sssb.py

Como alternativa, você pode executar o trabalho como argumento para bash:

* * * * * "$(command -v bash)" -c 'source activate myenv3 && cd ~/foo/bar && python sssb.py'

informação relacionada