【每日一记11】Linux下日志文件过大解决方案
  

新手781833 1630

{{ttag.title}}
很多Linux服务器里的应用程序都是无间断的输出日志,这对于服务器的硬盘是一个很大的考验。良许之前也分享过一篇文章,介绍如何让应用程序在后台执行:

linux后台执行命令:&与nohup的用法

通过以上方法,应用程序的日志会一直输出到日志文件myout.txt里,这个文件也会不断的增大,一直蚕食服务器硬盘。

但是,我们都知道,日志对于我们而言是非常重要的,一量应用程序出现bug,或者服务器宕机,我们必须通过日志文件来进行debug或进一步分析。所以,日志文件不能简单的一删了之。

这时,我们想到,如果能将日志文件切分该多好,这样我们可以留下重要的日志,而删掉不必要的日志。下面良许就来详细介绍这种方法。

我们可以每天都进行切分日志的操作,那要这样的话,为了避免混淆,我们切分出来的日志都应该带上日期。当然日期我们可以通过以下语句获取:

current_date=`date -d "-1 day" "+%Y%m%d"`
date -d "-1 day"表示获取前一天的日期,就是说我们今天操作的话是切割昨天的日志。+%Y%m%d是具体的日期格式,也就是年月日格式,比如:20181005。

接下来,我们再切割日志。

split  -b 65535000 -d -a 4  myout.txt  ./log/log_${current_date}_
其中,65535000是60M,也就是日志文件按60M大小进行切割,可自定义大小。-d -a 4表示文件后缀是4位。我们将文件切割后要按次序进行编号,比如0000,0001,0002……这个4就代表编号的位数。

再之后的./log/log${current_date}就是切割后日志文件的前缀,里面就带入了当前日期。所以,最终的输出格式类似于:log_20181005_0001。

日志文件切割完之后,就可以将日志文件删除了,否则就失去切割文件的意义了。删除的方法可以用以下方式:

cat /dev/null > nohup.out
将以上这些命令写在一个脚本里,每天运行它,就可以将日志文件切割成若干分,便于我们排查。完整的代码如下:

#!/bin/bash

current_date=`date -d "-1 day" "+%Y%m%d"`
split -b 65535000 -d -a 4 /home/alvin/myout.txt   /home/alvin/log/log_${current_date}_
cat /dev/null > nohup.out

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

gqce 发表于 2020-9-19 09:41
  
感谢分享
发表新帖
热门标签
全部标签>
设备维护
有一说一
新版本体验
山东区技术晨报
纪元平台
功能体验
每日一问
虚拟机
安装部署配置
解决方案
排障笔记本
测试报告
标准化排查
授权
技术盲盒
2024年技术争霸赛
问题分析处理
GIF动图学习
原创分享
资源访问
齐鲁TV
云化安全能力
日志审计
每日一记
sangfor周刊
地址转换
「智能机器人」
场景专题
2025年技术争霸赛
信服课堂视频
专家问答
技术圆桌
升级
玩转零信任
升级&主动服务
VMware替换
畅聊IT
上网策略
运维工具
用户认证
信服故事
平台使用
排障那些事
西北区每日一问
高手请过招
高频问题集锦
全能先锋系列
安全效果
产品连连看
安全攻防
华北区交付直播
每周精选
专家说
产品知识周周练
技术笔记
SDP百科
北京区每日一练
故障笔记
社区新周刊
行业实践
流量管理
产品动态
技术顾问
答题自测
在线直播
MVP
VPN 对接
项目案例
存储
产品预警公告
技术争霸赛
追光者计划
2023技术争霸赛专题
技术晨报
关键解决方案
声音值千金
网络基础知识
功能咨询
卧龙计划
华北区拉练
【 社区to talk】
工具体验官
终端接入
迁移
秒懂零信任
POC测试案例
专家分享
S豆商城资讯
天逸直播
SANGFOR资讯
以战代练
文档捉虫
产品解析
产品体验官
热门活动

本版达人

feeling

本周分享达人

新手29676...

本周提问达人