×

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

新手781833 757

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

本版版主

12
185
6

发帖

粉丝

关注

121
313
351

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人