定時清理日誌的shell指令碼

2022-06-29 05:12:13 字數 1666 閱讀 2742

因為公司springcloud專案各個server的日誌堆積日益增多佔據伺服器記憶體,故提出了定時清理7天之外的日誌需求。

場景:日誌目錄結構:/logs/server_name/date/date_1.log

789# 刪除子目錄下的過期log日誌

10removelogs() )

1415 year=$

16 month=$

17 days=$

18 day_array=($)

19 day=$

2021 subdir_day=$year$month$day

2223

if [ "

$" \< "$"

]24then

25echo

"the log $filename has been cleaned."26

rm -rf $1/$filename >/dev/null

27fi

28done29}

3031 # 因為日誌目錄格式為/logs/excel巢狀了兩層,所以用了2層for迴圈

32for sub1 in `ls $dir

`;33

do34

if [ -d $sub1 ];

35then

36for sub2 in `ls

$sub1`;

37do

38file=$dir"/

"$sub1"/"

$sub2

3940

if [ -d $file

]; # 需要絕對路徑

41then

42 removelogs $file

43fi

4445

done

46fi

47done

**部分解釋:

`date + %y%m%d -d "7 days ago"`將當前日期往前推7天,並且輸出為年月日的格式。例如:20210217。

array=($)將命名如'dispatchorder-2021-02-12.0.log'的日誌,根據'-'將檔名分割成陣列:[dispatchorder,2021,02,12.0.log]。

year=$取出陣列的第二個元素,並將值賦給變數year。

rm -rf $1/$filename >/dev/null$1接收的是呼叫函式時傳遞過來的第乙個引數;rm -rf $fullfilename >/dev/null 根據全路徑名清空檔案。

if [-d $sub1]如果變數是資料夾;同理[-f $sub1]判斷是否為檔案;這裡的判斷需要絕對路徑。

定時清理檔案shell指令碼

乙個測試機上部署多個應用,總是經常出現磁碟空間已滿,不能部署應用的情況,所以寫了個小指令碼,用於定時清理日誌,避免出現這種情況。1 如果是清理固定路徑下的檔案,可以直接用命令方式。命令方式 1 編寫命令 find logs name catalina.out log and mtime 7 測試方法...

定時清理檔案shell指令碼

乙個測試機上部署多個應用,總是經常出現磁碟空間已滿,不能部署應用的情況,所以寫了個小指令碼,用於定時清理日誌,避免出現這種情況。1 如果是清理固定路徑下的檔案,可以直接用命令方式。命令方式 1 編寫命令 find logs name catalina.out log and mtime 7 測試方法...

定時清理日誌檔案的指令碼

usr bin python coding utf 8 import os import os.path,time,datetime logdir opt 日誌檔案所在的路徑 for parent,dirname,filenames in os.walk ogdir for filename in ...