天天看點

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           

原文釋出時間為:2018-10-18

本文作者:良許

本文來自雲栖社群合作夥伴“

良許Linux

”,了解相關資訊可以關注“

”。

繼續閱讀