美文网首页
crontab定时执行任务

crontab定时执行任务

作者: 晓函 | 来源:发表于2016-10-30 11:03 被阅读364次

    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
    

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

    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定时执行任务

          本文链接:https://www.haomeiwen.com/subject/ontuuttx.html