crontab命令可以设置定时执行任务,比如定时执行备份,定时爬取数据等
我们需要每个小时执行一次爬虫,crontab运行的目录没有指定,且由于scrapy是安装在虚拟目录,所以我们需要调用scrapy的绝对路径,/var/virtualenvs/scrapy_venv/bin/scrapy,而crawl命令和taoke项目,都是需要进入项目文件后才能调用,于是需要先cd到爬虫的项目目录中, cd /var/spiders/taokespider。
组合出命令cd /var/www/taokespider && /var/virtualenvs/scrapy_venv/bin/scrapy crawl taoke
可以在指定用户的登录shell中直接运行这条命令,试试能否正常启动,能的话再加入到crontab中执行。
注意,不同用户权限不同,如果任务中的程序涉及写文件,权限不够会报错,先登录到该用户,输入命令先测试是最好的。
比如我,在root中测试命令正确,我就直接添加到了另外一个用户corek的crontab中去了,然后居然不执行,登录corek用户然后输入命令测试,才发现出现权限问题。
修改好权限后,手动测试成功,就可以加入crontab配置文件了
我们需要编辑crontab任务,使用命令
crontab -e
或者指定某个用户的crontab任务
crontab -u username -e
输入完命令就会弹出一个配置文件编辑,
接下来完成执行时间
*/15 * * * * 就是每15分钟执行一次
0 */1 * * * 的意思是每个小时的0分开始执行,/是每的意思,
比如30 */2 * * *就是每隔2个小时的30分开始执行
30 8-23/1 * * * 就是8点-23点之间每隔1小时,时间到了30分就开始执行
30 8-2/1 * * * 就是8点-凌晨2点之间每隔1小时,时间到了30分就开始执行
在crontab配置文件中加入命令
30 8-23/1 * * * cd /var/www/taokespider && /var/virtualenvs/scrapy_venv/bin/scrapy crawl taoke
然后保存。
查看任务
crontab -l
或者
crontab -u username -l
这样就完成了。。
以下是crontab的一些命令
crontab -e #编辑任务配置
crontab -l #查看任务
crontab -r #删除任务