使用crontab定时执行python文件问题追根溯源

  使用crontab执行定时任务不是第一次用,昨天下午设置几个任务,yy里面已存在的任务,修改指定python环境和执行文件路径后,死活到点不执行。

  任务设置如下:

15 16 * * *  /root/env_dir/zxkg/bin/python /root/myproject/zhxin/some_tasks/announcement_task.py

15 16 * * * /root/env_dir/zxkg/bin/python /root/myproject/zhxin/some_tasks/finreport_task.py

15 16 * * * /root/env_dir/zxkg/bin/python /root/myproject/zhxin/some_tasks/layout_task.py

15 16 * * * /root/env_dir/zxkg/bin/python /root/myproject/zhxin/some_tasks/stock_price_task.py

  crontab: installing new crontab 表示任务设置成功。

  排查一:

    - 文件权限(必须可执行):

chmod u+x /root/myproject/zhxin/some_tasks/announcement_task.py

chmod u+x /root/myproject/zhxin/some_tasks/finreport_task.py

chmod u+x /root/myproject/zhxin/some_tasks/layout_task.py

chmod u+x /root/myproject/zhxin/some_tasks/stock_price_task.py

  排查二:

    - 在窗口自己单独执行下如:/root/env_dir/zxkg/bin/python /root/myproject/zhxin/some_tasks/announcement_task.py,抛出问题

      - 导包问题见上一篇博客

      - 找不到安装的库,本例中使用的沙盒环境,执行pip install -r requirements.txt 安装的库没有安装到沙盒环境下(/root/env_dir/zxkg/lib/python3.5/site-packages/),若安装成功会在路径下找到。环境实在是怪异,创建沙盒指定的python3版本,进入沙盒环境下,执行python竟然显示的python2,更不用说pip了。

  一万个?。?,记得上上个礼拜参加比赛,比赛项目部署在我的这个服务器上,当时一个同事把密码要过去了,深深地怀疑动环境了。。。

  立马改了个密码,改完不到一分钟,那个同事问我是不是改密码了@!@,跑过来说要上服务器看代码,在服务器上运行,一句话怼回去了(上码云上拉,本地运行)无需解释太多。

  于是,今天重装了python环境,等着交任务时碰到环境问题、运维问题是最让人脑仁疼的。。。

  解决:

    重装python3环境,参考oschina上一篇文章

    此处纠正下,要是复制文章中的命令创建软链时会报错:ln: target `/usr/bin/python3' is not a directory ,作者手误ln -s前面的中线写成中文的了。

    感谢作者分享高质量文章,解决了我的问题~

作者文章地址:

  https://my.oschina.net/cwftalus/blog/1551273

原文地址:https://www.cnblogs.com/NolaLi/p/11083752.html