Scrapyd 日志输出定时清理

现在维护着一个新浪微博爬虫,爬取量已经5亿+,使用了Scrapyd部署分布式。

Scrapyd运行时会输出日志到本地,导致日志文件会越来越大,几十个G,这个其实就是Scrapy控制台的输出。但是这个日志其实有用的部分也就是最后那几百行而已,如果出错,去日志查看下出错信息就好了。

所以现在可以写一个脚本,来定时更新日志文件,将最后的100行保存下来就好了。

Scrapyd默认的日志目录是在用户文件夹下的logs目录。

所以在这里我们指定dir=~/logs

新建bash脚本,内容如下:

#!/bin/sh

clean() {
  for file in $1/*
  do
    if [ -d $file ]
    then
      clean $file
    else
      echo $file
      temp=$(tail -100 $file)
      echo "$temp" > $file
    fi
  done
}

dir=~/logs
clean $dir

新建这样的一个脚本,然后命名为 clean.sh,我的直接放在了用户文件夹下。

然后crontab创建定时任务。

执行

crontab -e

我们想要一分钟清理一次日志文件。

输入

*/1 * * * * /bin/sh ~/clean.sh

然后退出之后,crontab就可以每隔一分钟执行一次clean.sh,清理日志了。

这样我们就不怕日志文件大量占用主机空间啦~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区