乐趣区

关于linux:Linux下日志文件过大解决方案

很多 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



更多精彩内容,请关注公众号 良许 Linux,公众内回复 1024 可收费取得 5T 技术材料,包含:Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能 ,等等。公众号内回复 进群,邀请您进高手如云技术交换群。


最初,最近很多小伙伴找我要Linux 学习路线图,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux 开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 反对搜寻的资源网站
退出移动版