美文网首页
2019-03-08 利用crontab定时启停爬虫

2019-03-08 利用crontab定时启停爬虫

作者: 慧鑫coming | 来源:发表于2019-03-08 22:37 被阅读0次

    缘起:

    公司有个爬虫项目,它会爬取一些指定的数据到测试服务器的数据库,现状是
      ①每日我早上启动,到晚上关闭(中间可能会自动停);
      ②我从测试服务器导出新增数据给老大,老大负责放到线上。

    愿景:

    ①爬虫定时自动启停;
      ②数据定时自动导出,上传到老大指定的一个位置,剩下的他接管。

    打怪记录:

    • 脚本1,启动爬虫项目:
      没什么好说的,因为项目已经将所有爬虫的启动集中到main.py文件中,记得改掉文件权限。

    • 脚本2,杀死爬虫项目:
      问题①:根据进程名中关键字杀死进程及其子孙进程的命令
      ps -ef | grep procedure_name | grep -v grep | awk '{print $2}' | xargs kill -9

    • 脚本3,自动导出数据库数据,上传到服务器
      问题①:数据库是mysql,我使用mysqldump命令不想写入明文密码;
      问题②:我导出的数据不想有创建表结构的语句;
      问题③:我导出数据时,不想锁表,因为可能爬虫还在爬,在输出的文件里,也不想增加 LOCK TABLES t WRITE;
      问题④:我只想导出时间是最新的数据。
      解:这四个问题都可以在一行命令内解决
      mysqldump --default-file=配置文件 --no-create-info --single-transaction --add-locks=0 --where="time > today" --result-file=data.sql;
      说明:
        --default-file=文件路径,通过配置文件连接mysql客户端,解决了问题①;
        --no-create-info 表示不需要导出创建表结构语句;
        --single-transaction 导出数据的时候不需要对表加表锁,不影响爬虫;
        --add-locks=0 表示输出的文件里,没有插入数据前的锁表语句;
        --where=条件,可以指定要导出数据满足的条件
      问题⑤:shell脚本中怎样获取当前日期并赋值给变量?
      解:
        获取当前日期 tod=date +%Y-%m-%d(2019-03-08)
        获取昨天日期 yes=date -d 'last day' +%Y%m%d(mac上试了不好使)

    • crontab的配置:
      参考

    相关文章

      网友评论

          本文标题:2019-03-08 利用crontab定时启停爬虫

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