自动清理日志脚本
公司的业务服务会打日志到磁盘, 程序已经做了日志切割, 时间一长磁盘占满会导致业务异常, 普通的清理逻辑是使用 crontab 定时删除文件, 比如每天 1 点删除创建日期超过 30 天的日志文件, 大部分情况下工作是 OK 的, 但是执行周期太长, 如果当天日志暴增, 不能及时删除文件. 也会有隐患, 优化版脚本如下:
日志清理分以下几种:
- 历史日志, 并且未在写入的日志, 这种可以直接删除掉.
- 当前正在写入的日志, 需要清理, 这种不能删除, 可以通过清空文件的方式来释放空间
set -euo pipefail 的作用:
set -e: 脚本中有任何一条命令执行失败, 整个脚本就失败
set -u: 脚本中的变量有任何一个变量为空, 整个脚本执行失败
-o pipefail: 脚本中的管道中任何一条命令执行失败, 也会认为脚本执行失败
脚本内容:
1 |
|
磁盘使用率低于 80% 不会执行操作, 所以可以缩短 crontab 执行的间隔, 我一般设置成 5 分钟检测一次, crontab 内容:
1 | */5 * * * * /data/tools/clean.sh > /dev/null 2>&1 |
注意: crontab 最后需要保留一个空行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
评论