crontab定时任务

2019-04-11  本文已影响0人  pubalabala

使用crontab部署定时任务

  1. 什么是Crontab?
    Crontab命令是Unix系统和类Unix系统中,用来设置周期性执行的指令。该命令从标准输入设备读取指令,并将其存放在“Crontab”文件中,以供后期读取和执行。Crontab所存的指令,被守护进程激活。crond常常在后台运行,以一分钟为间隔检查是否有预定的作业需要执行,这类作业一般成为cron jobs。

  2. 打开Ubuntu中的crontab功能
    在Ubuntu中,crontab功能默认是关闭的,需要我们自己打开。
    sudo vim /etc/rsyslog.d/50-default.conf

    #  Default rules for rsyslog.
    #
    #            For more information see rsyslog.conf(5) and /etc/rsyslog.conf
    
    #
    # First some standard log files.  Log by facility.
    #
    auth,authpriv.*          /var/log/auth.log
    *.*;auth,authpriv.none       -/var/log/syslog
    cron.*               /var/log/cron.log
    #daemon.*            -/var/log/daemon.log
    kern.*               -/var/log/kern.log
    #lpr.*               -/var/log/lpr.log
    mail.*               -/var/log/mail.log
    #user.*              -/var/log/user.log
    
    #
    # Logging for the mail system.  Split it up so that
    # it is easy to write scripts to parse these files.
    #
    #mail.info           -/var/log/mail.info
    #mail.warn           -/var/log/mail.warn
    mail.err         /var/log/mail.err
    
    #
    # Some "catch-all" log files.
    #
    #*.=debug;\
    #    auth,authpriv.none;\
    #    news.none;mail.none -/var/log/debug
    #*.=info;*.=notice;*.=warn;\
    #    auth,authpriv.none;\
    #    cron,daemon.none;\
    #    mail,news.none      -/var/log/messages
    
    #
    # Emergencies are sent to everybody logged in.
    #
    *.emerg              :omusrmsg:*
    
    #
    # I like to have messages displayed on the console, but only on a virtual
    # console I usually leave idle.
    #
    #daemon,mail.*;\
    #    news.=crit;news.=err;news.=notice;\
    #    *.=debug;*.=info;\
    #    *.=notice;*.=warn   /dev/tty8
    

    将cron.*               /var/log/cron.log 取消注释

    然后重启系统服务,使改动生效: sudo service syslog restart

  3. 添加定时任务

    • 首先创建自己的脚本文件并依次写入需要执行的命令

    • 使用crontab -e命令来打开当前命令所属的crontab文件,如涉及root用户权限请使用sudo crontab -e

    • 第一次使用该命令会让你选择编辑器,我选择2使用vim

    • 打开文件后在最后一行添加crontab命令,例如:0 0 * * * sh ~/mysh.sh(需要执行的脚本文件路径)

    命令需要执行的脚本文件一定要使用绝对路径

    • crontab命令格式


      crontab命令格式
    • 例如:
      */1 * * * * 每分钟执行一次
      0 * * * * 每小时执行一次
      0 0 * * * 每天执行一次
      0 0 * * 0 每周执行一次
      0 0 1 * * 每月执行一次
      0 0 1 1 * 每年执行一次

    • 最后重启cron服务: sudo service cron restart

  4. 定时执行scrapy项目实战
    脚本的逻辑就是先进去到爬虫所在的文件夹然后执行scrapy crawl yourSpider(你的爬虫的名称)
    有个注意点就是scrapy在脚本中要写它的绝对路径,通过命令which scrapy来获取路径

    1. 编写脚本文件: vim /home/timedtasks/my_spider.sh
    cd /home/project/test_scrapy/test_scrapy/spider
    /home/anaconda3/envs/test_env/bin/scrapy crawl test_spider
    
    1. 添加定时任务: sudo contab -e
      在最后一行添加任务: 0 13 * * * sh /home/timedtasks/my_spider.sh
      保存并退出esc :wq

    2. 重启cron服服务: sudo service cron restart
      完成!

上一篇 下一篇

猜你喜欢

热点阅读