Ich möchte die folgende Befehlskette als Cronjob erhalten:
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
Es funktioniert in der Konsole, aber ich bekomme keine Ausgabe vom Cronjob.
Ich folgte diesem Vorschlag, indem ich ihn durch ersetzte
* * * * * env > /tmp/env.output
um herauszufinden, ob env anders ist. Ich konnte nichts Relevantes finden, außer dass PATH anders war. Also habe ich mich eingerichtet
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
und es hat immer noch nicht funktioniert. Schließlich habe ich es durch ersetzt
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
* * * * * env > /tmp/env.output
und diesmal habe ich nicht einmal die env.output
Datei bekommen. Daher denke ich, dass etwas mit meiner Syntax 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
grep SHELL /tmp/env.output
? Führen Sie auch den ersten Job als aus* * * * * ( . activate myenv3 && cd ~/foo/bar && python sssb.py ) >/tmp/out.err 2>&1
und überprüfen Sie den Inhalt von/tmp/out.err
out.err
und den tatsächlichen Pfad ein, den ich in die Frage eingefügt habe.$(command -v bash) -c ' ... '
- löst den gesamten Tigaboo, ohne in die (nicht so) chaotischen Details zu geraten."$(command -v bash)" -c '...'
ist sinnlos. Tunbash -c '...'