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

缘起:

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

愿景:

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

打怪记录:

  • 脚本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定时启停爬虫)