怎么归档老日志的shell脚本
工作中,需要用到日志切割logrotate,按照各自的需要切割、定义保留日志。
#用途:日志切割归档、按天切割 logdir=/data/logs/ #定义函数如果一个文件存在则删除 function e_df() { if [ -f $1 ] then rm -f $1 } 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 fi done #由于1.log 后面无后缀,所以不能走上面的for循环,只能另外拿出来处理 e_df 1.log.1 mv 1.log 1.log.1 #每日0点0分执行。
工作中还需要为大文件进行切割,一般工作中是100MB,并进行压缩。
第二脚本
#!/bin/bash #用途:日志切割归档、并压缩 logdir=/data/logs/ #技术1.log大小 size=`du -sk $logdir/1.log | awk '{print S1}' #如果1.log小于l00MB,则退出脚本 if [ $size -lt 10240 ] then exit 0 fi #定义函数,如果一个文件存在,则删除 function e_df() { if [ -f $1 ] then rm -f $1 fi } 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 ##说明:由于我们需要按照日志大小切割,所以这个脚本写完后,需要每分钟执行一次,建议添加到公司的监控系统中。
相关推荐
wintelx 2020-06-11
zhuxue 2020-10-14
zhangbingb 2020-09-21
HeronLinuxampARM 2020-09-14
美丽的泡沫 2020-09-08
goodstudy 2020-08-19
luvhl 2020-08-17
littleFatty 2020-08-16
gamestart0 2020-08-15
URML 2020-08-15
sfkong 2020-08-02
82941732 2020-07-27
偏头痛杨 2020-07-18
timewind 2020-07-04
89407707 2020-06-27
xiaoxiaoCNDS 2020-06-26
lyjava 2020-06-26