怎麼歸檔老日誌的shell指令碼

2022-08-01 23:42:23 字數 1509 閱讀 6285

#用途:日誌切割歸檔、按天切割

#日期:2023年12月15日

#版本:v0.1

logdir=/data/logs/

#定義函式如果乙個檔案存在則刪除

function e_df()

cd $logdir

#從7到2,依次遍歷迴圈

for i in `seq 7 -1 2`

do #$i2比si小1

i2=$[si-1]

#首先判斷1.log.7是否存在,若存在則刪除

e_df 1.log.$i

#當1.log.6存在,則把1.log.6改名為1.log.7,依次類推

if [ -f 1.log.$i2 ]

then

mv 1.log.$i2 1.log.$i

fidone

#由於1.log 後面無字尾,所以不能走上面的for迴圈,只能另外拿出來處理

e_df 1.log.1

mv 1.log 1.log.1

#每日0點0分執行。

工作中還需要為大檔案進行切割,一般工作中是100mb,並進行壓縮。

第二指令碼

#!/bin/bash

#用途:日誌切割歸檔、並壓縮

#日期:2023年12月15日

#版本:v0.1

logdir=/data/logs/

#技術1.log大小

size=`du -sk $logdir/1.log | awk ''

#如果1.log小於l00mb,則退出指令碼

if [ $size -lt 10240 ]

then

exit 0

fi #定義函式,如果乙個檔案存在,則刪除

function e_df()

cd $logdir

#如果1.log.1存在,則先把它壓縮為1 log.1.gz,這樣下面的for迴圈才不會錯

if [ -f 1.log.1 ]

then

gzip 1.log.1

fi #由於1.log.1已經被壓縮為1.log.gz,所以可以直接將1.log改名為1.log.1

mv 1.log 1.log.1

#從7到2,倒序迴圈

for i in `seq 7 -1 2 `

do #$i2比si小1

i2=$[si-1]

#首先判斷1 log.7.gz是否存在,若存在刪除

e_df 1.iog. $i.gz

#當1.log.6.gz存在,則把1.log.6.gz改名為1.log.7.gz,以此類推

if [ -f 1.iog. $i2. gz ]

then

mv 1.iog. $i2.gz 1.iog.$i.gz

fi done

##說明:由於我們需要按照日誌大小切割,所以這個指令碼寫完後,需要每分鐘執行一次,建議新增到公司的監控系統中。

歸檔老日誌的shell指令碼

本指令碼來自有學習阿銘的博文學習 工作中,需要用到日誌切割logrotate,按照各自的需要切割 定義保留日誌。bin bash 用途 日誌切割歸檔 按天切割 日期 2018年12月15日 版本 v0.1 logdir data logs 定義函式如果乙個檔案存在則刪除 function e df ...

python歸檔日誌指令碼

usr bin python3 encoding utf 8 import os from configparser import configparser import zipfile 主要實現功能 1 路徑處理 2 解壓縮重複不壓縮 3 壓縮,其他的可能需要自己改寫 判斷儲存路徑是否已經有相同檔...

mysql怎麼刪除歸檔日誌 歸檔日誌刪除需要注意項

delete archivelog all將會毫無保留的刪除所有的歸檔日誌 在控制檔案中有相應記錄的 1 delete archivelog all將會毫無保留的刪除所有的歸檔日誌 在控制檔案中有相應記錄的 2 歸檔日誌的資訊被記錄在控制檔案之中,其生存期和可保留的總數也受到控制檔案建立初以及引數c...