为了理解路径,我一直试图使用cron自动运行Python脚本。
首先,我尝试使用用户crontab:
crontab -e我建立了这样的crontab:
PYTHONPATH=/home/dpa/anaconda3/bin/python
PATH=/home/dpa/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
36 15 * * * python /home/dpa/PycharmProjects/Parser/Parser.py >> /tmp/mycommand.log 2>&1脚本不运行,我得到以下错误:
/bin/sh: 1: python: not found然后我试着作为超级用户:
sudo crontab -e我设立了这样的cronetab
PYTHONPATH=/home/dpa/anaconda3/bin
PATH=/home/dpa/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
43 15 * * * su - dpa python /home/dpa/PycharmProjects/Parser/Parser.py >> /tmp/mycommand.log 2>&1现在STDERR看起来是这样的:
-su: python: No such file or directory发布于 2018-06-18 15:00:54
首先,由于您拥有root访问权限,我建议您在/opt中编译和构建anaconda,而不是在您的主目录中。
实际上,您要做的是将变量路径设置为等于目录列表,将PYTHONPATH设置为等于anaconda可执行文件所在的目录,这将导致您的问题。
要得到您想要的,更好的方法是变成根,然后假设您的shell是bash:
export PATH=/home/dpa/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/home/dpa/anaconda3/lib
export PYTHONHOME=/home/dpa/anaconda3
bash这将设置要在包含anaconda及其库的目录中查找的路径和库,bash将启动一个新会话。然后可以将python命令添加到crontab中。
如果您打算以root的形式运行它,那么您就不需要su -,而且最好是在crontab of root中运行它,因为您拥有它的方式,PYTHONPATH和PYTHONHOME设置在您的用户环境中,而不是在root环境中。
如果更好,可以将其全部放入脚本中,只需将脚本本身添加到crontab中即可。
再次,我建议在/opt中安装anaconda,而不是用户的主目录。
https://unix.stackexchange.com/questions/450448
复制相似问题