Sintaxis de crontab; Múltiples comandos

Sintaxis de crontab; Múltiples comandos

Me gustaría obtener la siguiente cadena de comandos como cronjob:

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

Funciona en la consola, pero no obtengo ningún resultado del cronjob.

Seguíestesugerencia, reemplazándola por

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

para saber si env es diferente. No pude encontrar nada relevante además de que PATH sea diferente. Entonces configuré

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

y todavía no funcionó. Finalmente lo reemplacé con

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

y esta vez ni siquiera recibí el env.outputarchivo. Por lo tanto, creo que hay algún problema con mi sintaxis, pero se ve exactamente como las sugerencias de comandos múltiples que encontré en línea.

¿Que está pasando aqui? Si no es obvio, ¿qué puedo hacer a continuación para rastrear el error?

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

Respuesta1

En Ubuntu, de forma predeterminada, el crondemonio ejecuta todos los trabajos usando el shell sh( dash) y dashno tiene sourcefunciones integradas.

Debe utilizar la forma POSIX, es decir .:

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

Alternativamente, puede ejecutar el trabajo como argumento para bash:

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

información relacionada