
在我的Debian
伺服器上,我用來crontab
安排python
程式碼。問題是:當我添加這樣的行時:
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt
毫不奇怪,輸出表明python
未找到命令。
當然,我可以只為 crontab 條目添加完整路徑/opt/python/3.9.2/bin/python
,例如 ,但我不喜歡這個想法,因為它看起來很混亂,並且當我需要執行諸如 之類的操作時,這個問題也仍然os.system("python task.py")
存在daily_task.py
。
我嘗試將這樣的行添加到/etc/environment
:
export PATH="$PATH:/opt/python/3.9.2/bin/"
重新啟動後,我確實可以python
在終端視窗中使用,但crontab
仍然$PATH
只包含/usr/bin
.
我應該在哪裡放置此程式碼以在各處進行更改$PATH
,包括crontab
(不更改 crontab 檔案)?
答案1
如果您查看 的內容/bin
,您會看到很多符號鏈接,因為許多程式沒有直接放入 bin 目錄中。你也可以做到的:
sudo ln -s /opt/python/3.9.2/bin/python /usr/bin
這樣,您就不需要修改您的crontab
.
答案2
您可以在 crontab 檔案本身中新增環境變量,如下所示:
PATH=/usr/bin:/whatever/bin
HOME=/home/myuser
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt