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.output
Datei 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 cron
alle Jobs mithilfe der sh
( dash
)-Shell aus und dash
verfügt nicht über source
integrierte 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'