Linux下日志文件過大解決方案


轉至:https://www.cnblogs.com/yychuyu/p/13687941.html

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM