因為公司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 ...