在我的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")
in 的操作时,此问题也仍然存在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