python脚本不是通过crontab执行的

时间:2015-07-24 05:26:35

标签: python shell cron

我有一个python脚本test.py(fyi,它包含一些爬行逻辑) 并希望它每隔一分钟执行一次。

所以我写了一个shell脚本weekjob.sh(在下面尝试了每一个)

<?php

//.. get $usercsvdata and $devicecsvdata

$this->load->library('zip');
$this->zip->add_data('users.csv', $usercsvdata);
$this->zip->add_data('devices.csv', $devicecsvdata);
$this->zip->download($user_file_name);

然后注册一份工作

python /path/test.py
/usr/bin/python /path/test.py
cd /path && /usr/bin/python test.py

但是没有执行python。

当我执行像* * * * * /bin/sh /path/weekjob.sh 这样的shell脚本时 它运作得很好。当我将weekjob.sh的内容更改为sh weekjob.sh时,cronjob也运行良好。

我的python cron作业出了什么问题?

(OS是centOS)

2 个答案:

答案 0 :(得分:2)

我找到了答案。 这是代理问题。 cronlog显示以下错误。

Traceback (most recent call last):
  File "/home/deploy/crawlingScript/proxyTest.py", line 41, in <module>
    converter = xml2csv(new_url, username, password, output_file_name, encoding="utf-8")
  File "/home/deploy/crawlingScript/converterOld.py", line 13, in __init__
    response = urllib2.urlopen(request)
  File "/usr/lib64/python2.6/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib64/python2.6/urllib2.py", line 391, in open
    response = self._open(req, data)
  File "/usr/lib64/python2.6/urllib2.py", line 409, in _open
'_open', req)
  File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
  File "/usr/lib64/python2.6/urllib2.py", line 1190, in http_open
return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib64/python2.6/urllib2.py", line 1165, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>

我在.bashrc中设置了代理,但我认为cron有一些问题。

所以,我刚刚在.py文件中添加了一些代理代码。

并且通过@WillemM找到了另一个解决方案

* * * * * . /path/.bashrc; /bin/sh /path/to/sh/test.sh

.bashrc是包含代理设置的文件。

答案 1 :(得分:-1)

而不是做

* * * * * /bin/sh /path/weekjob.sh 

为什么不放弃这样的/bin/sh

* * * * * /path/weekjob.sh 

首先确保该脚本是可执行的:

chmod +x /path/weekjob.sh