crontab
scrapy与crontab的结合
搞了一天终于能够用crontab自动运行scrapy了。
首先crontab是一款可以实现自动运行的工具,最短每分钟执行一次。由于我们需要不停的爬取网站信息,所以需要软件在后台自动运行scrapy。方法很简单,规定每到什么时间执行什么命令就可以了。
那么开始吧,把命令提交给crontab,等了一分钟、两分钟,什么也没有出现。当时我是懵b的,道理我都懂,但是为什么执行不了XD。我的crontab内容是 sh xxx.sh,xxx.sh里面就是scrapy crawl yyy。当然,xxx.sh肯定是没有执行成功的,那么干脆把crontab的内容换成 echo “Hello”吧。Of course还是什么都没有。这时注意到时不时terminal就来一句:You have new mail. 原来crontab会把每次的执行结果发邮件给我,但至少这说明crontab是好使的。但是sh还是总不成功,在网上看了很多帖子、博客,总是没有get the point. 终于,找到了关键的一句话:
原因大概是这样的,crontab执行的时候找不到scrapy这个命令,而这个命令在/usr/local/bin里,所以需要加入这个路径,然后就可以正常执行scrapy了。但是还有一个问题,每分钟一封邮件,一会感觉terminal要炸了XD。这个也找到了答案,可以在 * sh xxx.sh后面加上 >> file 2>&1,输出就会写入这个file里了。最后附上清理mail的方法,不然每过一段时间都会提示有new mail。
写的有些啰嗦,主要是想记录一下今天解决的两个问题。不用把问题交给明天的感觉真好。