不少Linux服務器裏的應用程序都是無間斷的輸出日誌,這對於服務器的硬盤是一個很大的考驗。良許以前也分享過一篇文章,介紹如何讓應用程序在後臺執行:linux
linux後臺執行命令:&與nohup的用法bash
經過以上方法,應用程序的日誌會一直輸出到日誌文件myout.txt裏,這個文件也會不斷的增大,一直蠶食服務器硬盤。服務器
可是,咱們都知道,日誌對於咱們而言是很是重要的,一量應用程序出現bug,或者服務器宕機,咱們必須經過日誌文件來進行debug或進一步分析。因此,日誌文件不能簡單的一刪了之。人工智能
這時,咱們想到,若是能將日誌文件切分該多好,這樣咱們能夠留下重要的日誌,而刪掉沒必要要的日誌。下面良許就來詳細介紹這種方法。debug
咱們能夠天天都進行切分日誌的操做,那要這樣的話,爲了不混淆,咱們切分出來的日誌都應該帶上日期。固然日期咱們能夠經過如下語句獲取:日誌
current_date=`date -d "-1 day" "+%Y%m%d"`
date -d "-1 day"表示獲取前一天的日期,就是說咱們今天操做的話是切割昨天的日誌。+%Y%m%d是具體的日期格式,也就是年月日格式,好比:20181005。code
接下來,咱們再切割日誌。it
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。date
日誌文件切割完以後,就能夠將日誌文件刪除了,不然就失去切割文件的意義了。刪除的方法能夠用如下方式:
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