Saya ingin mendapatkan rantai perintah sebagai cronjob berikut:
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
Ini berfungsi di konsol, tapi saya tidak mendapatkan output dari cronjob.
Saya mengikuti saran ini , dengan menggantinya dengan
* * * * * env > /tmp/env.output
untuk mengetahui apakah env berbeda. Saya tidak dapat menemukan sesuatu yang relevan selain PATH yang berbeda. Jadi saya mengatur
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
dan itu masih tidak berhasil. Akhirnya saya ganti dengan
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
* * * * * env > /tmp/env.output
dan kali ini saya bahkan tidak mendapatkan env.output
file. Oleh karena itu saya pikir ada sesuatu yang salah dengan sintaks saya - tetapi sepertinya persis seperti saran multi-perintah yang saya temukan online.
Apa yang terjadi di sini? Jika tidak jelas, apa yang bisa saya lakukan selanjutnya untuk melacak kesalahan?
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
? Jalankan juga pekerjaan pertama sebagai* * * * * ( . activate myenv3 && cd ~/foo/bar && python sssb.py ) >/tmp/out.err 2>&1
dan periksa konten/tmp/out.err
out.err
dan PATH aktual yang saya tempelkan ke pertanyaan.$(command -v bash) -c ' ... '
- memecahkan seluruh tigaboo tanpa masuk ke detail berantakan (tidak begitu)."$(command -v bash)" -c '...'
tidak ada gunanya. Lakukanbash -c '...'