歸檔老日誌的shell指令碼

2021-09-19 19:36:00 字數 1625 閱讀 7776

本指令碼來自有學習阿銘的博文學習:

工作中,需要用到日誌切割logrotate,按照各自的需要切割、定義保留日誌。

#!/bin/bash

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

#日期: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指令碼

用途 日誌切割歸檔 按天切割 日期 2018年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...

python歸檔日誌指令碼

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

Oracle 刪除歸檔日誌指令碼

歸檔日誌記錄著資料庫的操作記錄,是做資料恢復的依據,如果資料庫開啟了歸檔模式,那麼就會產生大量的歸檔日誌,當然如果有rman備份的話,可以在備份之後刪除已經備份過的日誌,如果是沒有採用rman備份的話,就需要自己來刪除這寫歸檔日誌。下面的幾個指令碼就減輕了dba的工作量。linux 平台 0 2 h...