求救一个不知道 Crontab, Python 运行 path 和 sh git 错在哪的问题

2014-08-03 13:55:39 +08:00
 cyandterry
写了一个Python script, 利用sh.git.log()来获取我自己某一project的最后修改时间, 遇到一个问题就是手动运行(chmod +x myscript.py 然后直接./myscript)script没有任何问题,用crontab来定时运行它,到下面中间last mod这一行
logging.debug('Still work')
last_mod = git.log('-1', '--date=iso')
logging.debug('Not work')
后面的任何语句都不会运行, 而且只有用crontab来运行的时候会出现这样的问题。

一开始以为可能是运行path的不对的问题,所以写了个bash.sh,大概就是
cd /project_directory
./myscript.py
同样,从任何路径运行bash.sh都没有问题,还是只是在crontab里有问题

后来又觉得可能是user permission的问题,是不是需要以我的身份运行这个cron才行,试了crontab -u myaccount -e 也不行,而且好像看无论怎么改不改身份或者手动运行script, logging的debug后面都显示是root, 所以应该也不是这个。

于是就纠结了, 求大神求助呀
3340 次点击
所在节点    问与答
5 条回复
notedit
2014-08-03 14:50:44 +08:00
几个问题

1,cronjob 是用一个全新的session 检查环境变量

2,有没有用python的虚拟环境

3,在cronjob里不要这样用log 最好重定向出来
ETiV
2014-08-03 17:34:03 +08:00
之前也遇到过

bash.sh 的最上面写

PATH=/usr/local/bin:/usr/bin:/bin

你python在哪,就把路径加进去。
简单点儿,先echo $PATH,再把结果贴过去。

记得前面要有PATH=
cyandterry
2014-08-04 02:04:50 +08:00
@notedit 感谢回复!刚才查了一下,试了@ETiV 的方法, 还是没有效果,应该不是环境变量的问题(在想是不是如果环境变量有问题的话,script从一开是就应该失败了吧?),我也没有用虚拟环境,至于那个log我已经输出到另外一个固定文件了,用的都是绝对路径,log运行到‘still work’那行都没有问题,到git.log那就跪了...前面其实还有蛮多代码的,但是都不太相干我就没贴,前面运行都没有问题,在这之前也运行过git.pull('origin','master'),所以git应该也不是问题....
notedit
2014-08-04 10:37:32 +08:00
没有用过python的git库 可以考虑在python 里面执行shell
cyandterry
2014-08-04 11:39:15 +08:00
@notedit 其实我用的就是sh.git

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX