![Crontab 構文; 複数のコマンド](https://rvso.com/image/1087101/Crontab%20%E6%A7%8B%E6%96%87%3B%20%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89.png)
次の一連のコマンドを cronjob として取得したいと思います。
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
コンソールでは動作しますが、cronjob からの出力は得られません。
私はついていきますこれ提案を次のように置き換える
* * * * * env > /tmp/env.output
envが異なるかどうか調べるために、PATHが異なること以外、関連するものは何も見つかりませんでした。そこで、
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
それでもまだうまくいきませんでした。最終的に、
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
* * * * * env > /tmp/env.output
そして今回はenv.output
ファイルさえ取得できませんでした。したがって、構文に何か問題があると思いますが、オンラインで見つけた複数コマンドの提案とまったく同じように見えます。
ここで何が起こっているのでしょうか? 明らかでない場合、エラーを突き止めるために次に何をすればよいでしょうか?
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
答え1
Ubuntu では、デフォルトでは、デーモンは( ) シェルcron
を使用してすべてのジョブを実行し、組み込みはありません。sh
dash
dash
source
POSIX 方式を使用する必要があります.
。つまり、
* * * * * . activate myenv3 && cd ~/foo/bar && python sssb.py
あるいは、次の引数としてジョブを実行することもできますbash
:
* * * * * "$(command -v bash)" -c 'source activate myenv3 && cd ~/foo/bar && python sssb.py'