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.output
archivo. 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 cron
demonio ejecuta todos los trabajos usando el shell sh
( dash
) y dash
no tiene source
funciones 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'