编写一个日志轮询归档脚本

回复 收藏

类似于日志切割,系统有个logrotate程序,可以完成归档。但现在我们要自己写一个shell脚本实现归档。 举例: 假如服务的输出日志是1.log,我要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3  一直到1.log.5。下面是我的一个参考脚本,供大家参考:

#!/bin/bash

function e_df()

{

    [ -f $1 ] && rm -f $1

}

for i in `seq 5 -1 2`

do

    i2=$[$i-1]

    e_df /data/1.log.$i

    if [ -f /data/1.log.$i2 ]

    then

        mv /data/1.log.$i2 /data/1.log.$i

    fi

done

e_df /data/1.log.1

mv /data/1.log  /data/1.log.1

2015-09-29 09:54 举报
已邀请:
0

zxcv473199162

赞同来自:

看看
0

Hyman1105

赞同来自:

学习
0

clq56688

赞同来自:

{:4_91:}
0

zyos

赞同来自:

想不出来。
0

清茶一杯

赞同来自:

学习
0

杭州小白

赞同来自:

1
0

彭海恒

赞同来自:

我也要看、
0

cxiaodian

赞同来自:

ok
0

ziwii

赞同来自:

学习一下
0

inzaghidai

赞同来自:

学习
0

vanjle

赞同来自:

0

木树

赞同来自:

看看
0

369666951

赞同来自:

看看
0

qiqige

赞同来自:

。。
0

qin521ne

赞同来自:

1
0

wangzai

赞同来自:

学习
0

linux-小莫

赞同来自:

看看
0

duyanbin

赞同来自:

学习一下
0

郭贞

赞同来自:

{:4_92:}
0

小璇Linux

赞同来自:

学习
0

yuan2015

赞同来自:

看看
0

zgyizu

赞同来自:

前来学习!!!
0

wangxinpeng

赞同来自:

看看
0

xufanyunwei

赞同来自:

学习
0

CNS2016

赞同来自:

学习
0

SunyBome

赞同来自:

答案
0

等风来

赞同来自:

学习
0

timfeng3535

赞同来自:

asdfasdf
0

branttsai

赞同来自:

study,tks
0

成都-小熊

赞同来自:

看看
0

monga

赞同来自:

学习
0

elvis

赞同来自:

ddd
0

漠林sky

赞同来自:

学习
0

luckytodd

赞同来自:

xuxi
0

nihao426181

赞同来自:

^
0

zmh0415

赞同来自:

学习
0

mind_sky

赞同来自:

学习下
0

jxcia2018

赞同来自:

look
0

jokerhuman

赞同来自:

huifu
0

397705152

赞同来自:

看看
0

smatch

赞同来自:

移动日志之后需要重启服务器吗
0

yaoyongxin

赞同来自:

看看脚本
0

Toornix

赞同来自:

kanxiadaan
0

阿杰

赞同来自:

1
0

jonnylin

赞同来自:

学习
0

Bullet_Point

赞同来自:

1
0

十月鱼

赞同来自:

学习
0

陈秋明

赞同来自:

look
0

riverxyz

赞同来自:

我还是看铭哥的答案吧
0

liqian

赞同来自:

学习
0

linuxcp

赞同来自:

{:4_91:}
0

GaryHuang0113 - 世上无难事,只怕有心人

赞同来自:

get
0

mqwh

赞同来自:

看一下,类似的脚本实战价值极大
0

hkmaozi

赞同来自:

学习
0

xgmxm

赞同来自:

学习
0

kevinjin

赞同来自:

  1. #! /bin/bash
  2. orgd=`ls -l 1.log|awk '{print $7}'`
  3. today=`date +%d`
  4. i=$[$today-$orgd]
  5. for i in `seq 1 5`
  6. do
  7.     mv 1.log 1.log.$i
  8. done
0

381775512

赞同来自:

看看
0

381775512

赞同来自:

看看
0

hhao

赞同来自:

1
0

kw是id

赞同来自:

用的笨方法

#!/bin/bash
dir=/usr/local/sbin
f=1.log
for i in `seq 1 5`
do
  cp $dir/$f /tmp/$f.$i
  sleep 86400
done

0

monga

赞同来自:

#!/bin/bash

file="/root/test/prictise/1.log"

sum=0

while :

do

  sum=$[$sum+1]

  mv $file /root/test/prictise/1.log.$sum

  new_f="/root/test/prictise/1.log.$sum"

  echo "$new_f"

  sleep 3600

  file=$new_f

  continue

done

0

王斌

赞同来自:

没想到 seq 反序

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: