crontab定时执行任务

crontab命令可以设置定时执行任务,比如定时执行备份,定时爬取数据等

我们需要每个小时执行一次爬虫,crontab运行的目录没有指定,且由于scrapy是安装在虚拟目录,所以我们需要调用scrapy的绝对路径,/var/virtualenvs/scrapy_venv/bin/scrapy,而crawl命令和discount项目,都是需要进入项目文件后才能调用,于是需要先cd到爬虫的项目目录中, cd /mnt/spiders/discountspider。
组合出命令cd /mnt/spiders/discountspider && /var/virtualenvs/scrapy_venv/bin/scrapy crawl discount
可以在指定用户的登录shell中直接运行这条命令,试试能否正常启动,能的话再加入到crontab中执行。
注意,不同用户权限不同,如果任务中的程序涉及写文件,权限不够会报错,先登录到该用户,输入命令先测试是最好的。

比如我,在root中测试命令正确,我就直接添加到了另外一个用户corek的crontab中去了,然后居然不执行,登录corek用户然后输入命令测试,才发现出现权限问题。

Paste_Image.png

修改好权限后,手动测试成功,就可以加入crontab配置文件了

我们需要编辑crontab任务,使用命令

crontab -e
或者指定某个用户的crontab任务
crontab -u username -e

输入完命令就会弹出一个配置文件编辑,

crontab定时执行任务_第1张图片
Paste_Image.png

接下来完成执行时间

*/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 /mnt/spiders/discountspider && /var/virtualenvs/scrapy_venv/bin/scrapy crawl discount

然后保存。

查看任务

crontab -l 
或者
crontab -u username -l

这样就完成了。。

以下是crontab的一些命令

crontab -e #编辑任务配置
crontab -l  #查看任务
crontab -r  #删除任务

你可能感兴趣的:(crontab定时执行任务)