![crontab 語法;多個命令](https://rvso.com/image/1087101/crontab%20%E8%AA%9E%E6%B3%95%EF%BC%9B%E5%A4%9A%E5%80%8B%E5%91%BD%E4%BB%A4.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 中,預設情況下,守護程式使用( ) shellcron
執行所有作業,且沒有內建進程。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'