V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cyandterry
V2EX  ›  问与答

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

  •  
  •   cyandterry · 2014-08-03 13:55:39 +08:00 · 3437 次点击
    这是一个创建于 3747 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写了一个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, 所以应该也不是这个。

    于是就纠结了, 求大神求助呀
    5 条回复    2014-08-04 11:39:15 +08:00
    notedit
        1
    notedit  
       2014-08-03 14:50:44 +08:00   ❤️ 1
    几个问题

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

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

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

    bash.sh 的最上面写

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

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

    记得前面要有PATH=
    cyandterry
        3
    cyandterry  
    OP
       2014-08-04 02:04:50 +08:00
    @notedit 感谢回复!刚才查了一下,试了@ETiV 的方法, 还是没有效果,应该不是环境变量的问题(在想是不是如果环境变量有问题的话,script从一开是就应该失败了吧?),我也没有用虚拟环境,至于那个log我已经输出到另外一个固定文件了,用的都是绝对路径,log运行到‘still work’那行都没有问题,到git.log那就跪了...前面其实还有蛮多代码的,但是都不太相干我就没贴,前面运行都没有问题,在这之前也运行过git.pull('origin','master'),所以git应该也不是问题....
    notedit
        4
    notedit  
       2014-08-04 10:37:32 +08:00
    没有用过python的git库 可以考虑在python 里面执行shell
    cyandterry
        5
    cyandterry  
    OP
       2014-08-04 11:39:15 +08:00
    @notedit 其实我用的就是sh.git
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1244 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:20 · PVG 07:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.