启动定时:crontab -e
50 16 * * * source /etc/profile && cd /home/AA/BB && nohup python remindmail.py > remindmail.log 2>&1 &
但是并没有定时产生,查看log
Traceback (most recent call last):
File "remindmail.py", line 5, in <module>
import MySQLdb
ImportError: No module named MySQLdb
这就很奇怪,我直接进行在终端运行
$ python remindmail.py # 这就可以直接运行,喵喵喵?
百度了一下之后,才知道和路径有关,所以开始解决
确认python路径
which python
~/Python/ENV/bin/python
然后终端实现
$ ~/Python/ENV/bin/python remindmail.py # 可行
然后放入crontab里面,和刚开始唯一的区别是,指定了python的运行路径
50 16 * * * source /etc/profile && cd /home/AA/BB && nohup ~/Python/ENV/bin/python remindmail.py > remindmail.log 2>&1 &
成功
尾巴
# 可见各个版本之间的问题
$ /usr/local/bin/python -V
Python 2.7.9
$ /usr/bin/python -V
Python 2.6.6
$ which python # 这是我们直接输入python xx.py执行的路径
/usr/local/bin/python
我们最终的目的就在于,模拟终端输入,只是用crontab进行定时例行而已,crontab里面估计默认的路径,所以需要用绝对路径来做,对于没有配置好环境的服务器,在此操作时候更加需要使用绝对路径!