我在Ubuntu 14.05上设置了一个cron作业来执行Python脚本。这个Python脚本应该获取一些数据,将其存储在数据库中并通过Boxcar向我的iPhone发送通知。问题是,我没有收到任何通知。另外,我检查了我的数据库。没有添加新数据,所以我很确定脚本没有被执行。
我使用了以下命令:sudo crontab -e
并输入以下内容:
30 09 * * * /usr/bin/python /home/jnevens/code/main.py
这应该每天9:30执行main.py
,对吗?
我的Python代码如下:
from tweet_mining import tweetFetcher
from rail import collectSchedules
from datetime import date, timedelta
from urllib import urlencode
from urllib2 import Request, urlopen
def go():
twitter = tweetFetcher()
tweetCount = twitter.main()
delta = timedelta(days=1)
d = date.today() - delta
collectSchedules(d, d)
push_not('Done!', 'Collected ' + str(tweetCount) + ' tweets')
return
def push_not(title, message):
url = 'https://new.boxcar.io/api/notifications'
values = {'user_credentials' : '####',
'notification[title]' : title,
'notification[sound]': 'echo',
'notification[long_message]': message}
data = urlencode(values)
req = Request(url, data)
response = urlopen(req)
return response.read()
go()
我是否需要重新启动cron作业才能开始工作?还有别的我做错了吗?
答案 0 :(得分:1)
如果服务器启用了邮件路由,请确保在crontab中设置了一个电子邮件地址,然后您就可以收到带有输出的邮件。
MAILTO=cron_output@example.com
还要确保将错误重定向到stdout。
30 09 * * * /usr/bin/python /home/jnevens/code/main.py 2>&1
或者,将输出重定向到本地日志文件并检查其中的内容。
如果可以,请在测试期间每分钟运行一次脚本,以便您可以实时查看出现的问题。通常问题是环境和/或shell环境与cron运行的环境之间的PATH有所不同。
答案 1 :(得分:0)
我总是在第一个脚本行中添加解释器的路径
#!/usr/bin/python"
在cron文件中没有。也许这是一个问题。
你使用的是Ubuntu,但在你的例子中的Centos这一节:“/ usr / bin / python”告诉cron deamon:用户运行脚本的权限。