很多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
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/70439.html
標籤:Linux
