shell指令碼定時壓縮日誌

2021-09-29 18:22:13 字數 1609 閱讀 7082

日誌檔案較大,每天定時壓縮昨天的日誌

新建乙個檔案:vi gz-log.sh

#vim gz-log.sh

#!/bin/bash

#凌晨2點時間

am0=020000

#凌晨3點時間

am1=030000

#壓縮檔案路徑

path=$*

while :;do

#系統前時間

systemtime=`date +%h%m%s`

#日誌日期時間

logtime=`date +"%y/%m/%d %h:%m:%s"`

if((`expr $systemtime + 0` >= `expr $am0 + 0` && `expr $systemtime + 0` < `expr $am1 + 0`));then

#獲取昨天日期

time=`date -d "-1 day" +%y%m%d`

echo $logtime 昨天的日期: $time

#獲取昨天日誌檔案

filenamelist=`ls $path |grep acc.log.$time |grep -v acc.log.$time.gz`

if [ ! $filenamelist ];then

echo $logtime "檔案不存在!"

sleep 1h

else

echo $logtime 壓縮的檔名: $filenamelist

for list in $;do

if [ -f $$list ];then

#執行壓縮

gzip -f $$list

r=$?

if(($r==0));then

echo $logtime "壓縮成功!"

sleep 1h

else

echo $logtime "壓縮失敗!"

sleep 1h

fielse

echo $logtime "此檔案不是普通檔案!"

sleep 1h

fidone

fielse

echo $logtime "未到壓縮時間,請稍等..."

sleep 1h

fidone

說明:每天凌晨2點到3點之間壓縮日誌,每小時迴圈一次,如果在壓縮時間範圍內就獲取昨天的日誌檔案進行壓縮,不在時間範圍內睡眠一小時

啟動**

新建檔案:vi statr.sh

#vim statr.sh

#!/bin/bash

#檔案路徑

path='/home/kechu_dev/logs/'

#日誌檔案路徑

logfile=/home/kechu_dev/logs/gz_log.log.`date +%y%m%d`

touch $

#啟動gz-logs.sh

nohup gz-log.sh $ > $ &

tail -f $

說明:定義要壓縮的日誌檔案路徑和本shell列印的日誌路徑,用nohup命令啟動gz-log.sh並追加日誌到本shell列印的日誌路徑

最後啟動./statr.sh即可

shell指令碼定時清除日誌檔案

bin bash clearfile 獲取資料夾內,檔案大小 m為單位 和檔案路徑 呼叫clear函式清空檔案 clear filesizeandfile clear echo 檔案大小 filesize echo 檔案路徑 filepath echo 磁碟空間 disksize 獲取檔名 file...

定時清理日誌的shell指令碼

因為公司springcloud專案各個server的日誌堆積日益增多佔據伺服器記憶體,故提出了定時清理7天之外的日誌需求。場景 日誌目錄結構 logs server name date date 1.log 789 刪除子目錄下的過期log日誌 10removelogs 1415 year 16 m...

shell 定時指令碼

很多時候我們有希望伺服器定時去執行乙個指令碼來觸發乙個操作,比如說定時去備份伺服器資料 資料庫資料等 不適合人工經常做的一些操作這裡簡單說下 shell shell俗稱殼,類似於dos下的command和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。作為命令語言,它互動式解釋和執行...