python“学习强国”任务自动化(三)利用linux的crontab自动维护

系统 2595 0

总的思路:先将项目部署到我的腾讯云虚拟主机中,然后在该台虚拟主机中设置定时任务。这个定时任务的内容就是去执行一个shell脚本,shell脚本的内容是去执行上一篇写好的爬虫程序来维护数据库并将输出结果利用git相关命令push到仓库中。

一、一些基础知识

1.1 linux的时间表
  1. crontab程序是类unix系统中用于周期性执行被指定的命令的程序。
  2. 命令用法的简单介绍
            
              
                #编辑当前用户的时间表程序
              
              
                crontab
              
               -e


              
                #查看当前用户的已经制定好的时间表
              
              
crotab -l


              
                #重启crond,以使时间表生效
              
              
systemctl restart crond

            
          

3.crontab的格式
* * * * * user command

1.2 shell编程
  1. 需要掌握shell编程的基本语法。
  2. 需要掌握linux下常见的命令
1.3 github的使用
  1. 如何在将gihub仓库部署到linux上,日后会写这篇(待补充)。
  2. 完成部署后提交部分文件到github仓库
            
              
                # 初始化本地git仓库,只需要进行一次,执行成功后会在当前目录生成一个git的隐藏目录。
              
              
                git
              
               init

              
                # 将项目的某个文件添加到仓库中,若我们需要上传的不是目录而只是一个文件,需要用f选项。
              
              
                git
              
               add -f 
              
                file
              
              
                # 添加本次改动的说明内容
              
              
                git
              
               commit -m 
              
                "text"
              
              
                #将本地的仓库关联到github上对应的仓库,后面的link是github上对应的仓库的.git地址
              
              
                git
              
               remote add origin 
              
                link
              
              
                #上传前pull一下,拿到该项目最新的版本
              
              
                git
              
               pull origin master

              
                #origin是本地仓库的缺省命名,master是远程仓库的master分支。
              
              
                git
              
               push -u origin master

            
          

二、编写shell脚本

2.1 目录结构

我设想的目录结构是这样的:

            
              
                [
              
              root@tysonscloud QIANGGUO
              
                ]
              
              
                # tree .
              
              
                .
              
              
                |
              
              -- __init__.py

              
                |
              
              -- linux_crontab

              
                |
              
              
                
                  `
                
                -- scripts 
                
                  |
                
                
                  `
                
              
              -- QGNews_maintain.sh

              
                |
              
              -- python项目(一)数据库设计.xls

              
                |
              
              -- QGNews_maintain_log

              
                |
              
              
                
                  `
                
                -- 2019-02-06 
                
                  |
                
                
                  `
                
              
              -- 2019-02-06_16:08.log

              
                
                  `
                
                -- scrapy 
                
                  |
                
                -- __init__.py 
                
                  |
                
                -- news_scrapy.py 
                
                  |
                
                -- news.sqlite 
                
                  `
                
              
              -- test_02.py

            
          
  • shell脚本存放在 linux_crontab 文件夹中,而每天的日志存放在QGNews_maintain_log目录中。
  • 并且每天都要用单独的文件夹来存放日志 。
2.2 shell脚本
            
              baseLogdir
              
                =
              
              /root/QIANGGUO/QIANGGUO/QGNews_maintain_log
everydayLog
              
                =
              
              
                $baseLogdir
              
              /
              
                
                  $(
                
                
                  date
                
                 +%F
                
                  )
                
              
              /

              
                [
              
              
                !
              
               -d 
              
                "
                
                  $everydayLog
                
                "
              
              
                ]
              
              
                &&
              
              
                mkdir
              
               -p 
              
                $everydayLog
              
              
                #判断每日的日志文件存放的目录是否存在
              
              

nowtime
              
                =
              
              
                
                  `
                
                
                  date
                
                 +%F_%H:%M
                
                  `
                
              
              
                #多条程序的执行时间是有时间差的,为了避免出现push命令执行时已经到了第二分钟,程序需要一个确定的时间
              
              

python /root/QIANGGUO/QIANGGUO/scrapy/news_scrapy.py 
              
                >
              
              
                $everydayLog
              
              /
              
                ${nowtime}
              
              .log 2
              
                >
              
              
                &
              
              1

              
                #创建每次维护的记录
              
              
                git
              
               init

              
                git
              
               add -f 
              
                $everydayLog
              
              /
              
                ${nowtime}
              
              .log

              
                git
              
               commit -m 
              
                "这是
                
                  ${nowtime}
                
                的维护日志,由crontab程序自动创建"
              
              
                git
              
               remote add origin git@github.com:chinaltx/QIANGGUO.git

              
                git
              
               pull origin master

              
                git
              
               push -u origin master

              
                #把每次维护的记录push到github
              
            
          
  • shell脚本写完后记得先进行测试: bash /root/QIANGGUO/QIANGGUO/linux_crontab/scripts/QGNews_maintain.sh

三、设置crontab程序

  • crontab -e :进行编辑
            
              0 */8 * * * 
              
                cd
              
               /root/QIANGGUO/QIANGGUO/
              
                ;
              
              
                bash
              
               linux_crontab/scripts/QGNews_maintain.sh`,每天的8点整、16点整、24点整会执行维护程序。

            
          
  • crontab -l :检查
  • systemctl restart crond :让crond任务生效。

四、github地址

  1. https://github.com/chinaltx/QIANGGUO
  2. 最后说一下思路:
  • 这几天写好rest风格的后台接口。
  • 再用python的GUI写一个桌面应用,这个桌面应用可以拿到每天最新的新闻数据,然后自动调用浏览器去执行(使用自动化测试框架实现),并且不会重复观看,除此之外就是一些搜索功能。
  • 再之后就是把学习强国网页版的整套api拿下来,通过提交请求的方法去告诉服务器我看了这篇文章,这样就可以把这一套程序移植到微信公众号上了。
  • 新手,边学边开发,还请急需这种程序的童鞋多多包容…

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论