归档老日志的shell脚本

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 归档老日志

本脚本来自有学习阿铭的博文学习:
工作中,需要用到日志切割logrotate,按照各自的需要切割、定义保留日志。

提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。

#!/bin/bash
#用途:日志切割归档、按天切割
#作者:Caron maktini
#日期:2018年12月15日
#版本:v0.1


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
#用途:日志切割归档、并压缩
#作者:Caron maktini
#日期:2018年12月15日
#版本:v0.1

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 

##说明:由于我们需要按照日志大小切割,所以这个脚本写完后,需要每分钟执行一次,建议添加到公司的监控系统中。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
23天前
|
Java Shell Linux
使用 sh -x 进行 shell 脚本调试
使用 sh -x 进行 shell 脚本调试
34 9
使用 sh -x 进行 shell 脚本调试
|
2天前
|
SQL Oracle NoSQL
实时计算 Flink版操作报错合集之报错“找不到对应的归档日志文件”,怎么处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4天前
|
监控 关系型数据库 MySQL
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
|
12天前
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
38 7
|
12天前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
50 6
|
13天前
|
存储 Shell 应用服务中间件
[ansible]wget批量调用shell脚本
[ansible]wget批量调用shell脚本
|
16天前
|
运维 监控 Shell
掌握100个开箱即用的Shell脚本~(附PDF)
Shell脚本是实现Linux系统管理及自动化运维所必备的重要工具。许多其它岗位的小伙伴也经常使用Shell脚本来实现某项需求。 今天分享《100个shell脚本案例》,共有55页,支持文字搜索定位,代码清晰可复制。
|
24天前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
29 3
|
7天前
|
存储 监控 Ubuntu
一键搞定:用脚本轻松部署ELK,让日志分析变得简单又高效
【8月更文挑战第13天】ELK栈由Elasticsearch、Logstash和Kibana组成,用于日志存储、解析及展示,是大数据领域广泛采用的日志解决方案。鉴于其安装配置复杂,本文提供了一个适用于Ubuntu 16.04的ELK自动安装Shell脚本示例。脚本首先确保Java环境安装,接着添加Elastic.co的APT仓库并安装ELK组件,最后启动所有服务。通过自动化流程,简化部署工作,减少人为错误,提升效率。实际应用中还需根据具体需求调整配置和服务设置。
13 0
|
13天前
|
应用服务中间件 Shell nginx
shell分析nginx日志的一些指令
shell分析nginx日志的一些指令