我需要在python脚本上运行cron作业以生成底图。
脚本本身可以手动运行。
在程序开始时使用简单的print("Hello")
并将其余注释都注释掉,在cron上也可以运行
*/10 * * * * /usr/bin/python3 ~/PythonFiles/TestScript.py > /dev/null 2>&1 >>log.txt
我使用chmod +x
使该文件成为可执行文件,并在程序开始时添加了一个shebang(#!/home/usr/anaconda3/bin/python
)。我也可以在程序开始时通过打印的消息来监视日志文件中的活动
urllib.request, datetime, matplotlib, basemap, pygrib, numpy, ...
)的“普通”程序时,脚本随后停止将任何内容输出到log.txt 因此,我怀疑这与模块及其位置有关。我检查了一下,发现它们似乎已安装在(.../pkgs, .../conda-meta, .../site-packages
的各个位置,等等。)
首先,我怀疑是正确的吗?
其次,如何解决此问题,以便cron知道在哪里可以找到运行该作业的所有库?
非常感谢!
答案 0 :(得分:0)
我怀疑这与模块位置路径有关。浏览网站并调整对cron的输入后,以下工作有效!
SHELL=/bin/sh
HOME=/home/stephane
PYTHONPATH=/home/stephane/anaconda3/bin/python
PATH=/home/stephane/anaconda3/lib/python3.6/site-packages
*/2 * * * * /home/stephane/anaconda3/bin/python ~/PythonFiles/TestScript.py >/dev/null 2>&1 >> log.txt
注意:matplotlib似乎需要“将matplotlib导入为mpl; mpl.use('Agg')”才能运行cron。
谢谢大家!