Crontab-Syntax; Mehrere Befehle

Crontab-Syntax; Mehrere Befehle

Ich möchte folgende Befehlskette als Cronjob bekommen:

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

Es funktioniert in der Konsole, aber ich bekomme keine Ausgabe vom Cronjob.

ich folgteDasVorschlag, indem Sie ihn ersetzen durch

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

um herauszufinden, ob env anders ist. Ich konnte nichts Relevantes finden, außer dass PATH anders ist. Also habe ich eingerichtet

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

und es hat immer noch nicht funktioniert. Schließlich habe ich es ersetzt durch

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

und dieses Mal habe ich nicht einmal die env.outputDatei erhalten. Daher denke ich, dass mit meiner Syntax etwas nicht stimmt – aber es sieht genauso aus wie die Vorschläge für mehrere Befehle, die ich online gefunden habe.

Was ist hier los? Wenn es nicht offensichtlich ist, was kann ich als nächstes tun, um den Fehler aufzuspüren?

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

Antwort1

In Ubuntu führt der Daemon standardmäßig cronalle Jobs mithilfe der sh( dash)-Shell aus und dashverfügt nicht über sourceintegrierte Funktionen.

Sie müssen die POSIX-Methode verwenden ., d. h.:

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

Alternativ können Sie den Job als Argument ausführen für bash:

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

verwandte Informationen