简介

对于日志的分割删除我们一般会使用logratate,但对于项目较多的情况下,会让开发直接将日志分割写在代码里面,对于分割后过期的日志定期删除就很有必要,不然膨胀的日志会占满你的磁盘,将多余的日志删除或挪到其他地方就是这个脚本的功能,如果有用请拿去自做修改,不谢。

效果截图

需要处理日志目录

处理后存放日志文件目录

脚本内容dellog.sh

#!/bin/bash
# William Guozi
# https://www.cnblogs.com/William-Guozi, williamguozi.github.io
# You are free to modify and distribute this code,
# so long as you keep my name and URL in it. #指定本脚本日志文件
logfile=/data/scripts/dellog.log
#要处理的日志文件目录
logdir=$1 #函数体,对目录内所有文件进行遍历
foreachd(){
for file in $1/*
do
if [ -d $file ];
then
#输入遍历过程的日志
echo `date`: "$file is dir" >> $logfile
#如果是目录,调用该函数遍历
foreachd $file
#如果是文件,将符合条件的做相应处理
elif [ -f $file ];
then
#输入遍历过程的日志
echo `date`: "$file is file" >> $logfile
#取出文件名
baseName=`basename $file`
#取文件上级目录做日志类型区分
nameType=`echo $file | awk -F/ '{print $(NF-1)}'`
#将文件进行筛选,将修改时间为今天以前名字中还有.的文件移动到/logs下,并重命名
find $file -mtime +0 -name "*.*" | xargs -I {} mv {} /logs/$baseName.$nameType
fi
done
} #判断参数是否为空,为空,显示帮助,不为空则调用函数
if [[ "x$logdir" == 'x' ]];
then
echo "Useage: bash dellog.sh dir. eg: bash dellog.sh /data/logs"
else
foreachd "$logdir"
fi

定时任务crontab

crontab -l

#delete log file

HOME=/data/scripts/

00 1 * * * /bin/bash /data/scripts/dellog.sh /data/logs

参考

https://blog.csdn.net/neil4/article/details/68945642

Shell: 定期存档日志文件的更多相关文章

  1. shell定期转移日志文件到云盘并定期删除云盘文件

    shell 脚本定期处理如下: cat /home/backup/logs_delete.sh #!/bin/bash /bin/find /data/logs/nginx/ -name " ...

  2. shell split分析日志文件

    在处理的文件comment有如下格式: ............................ xxx.xxx.10.59 db1059 mynbdpdatadb.idc4. dbname R620 ...

  3. shell脚本备份日志文件

    crontab -e crontab -l service crond restart 55 7 * * * /data/app/autoprice7/resin-pro-3.1.15/log_old ...

  4. 用shell脚本生成日志文件

    mdate=`date +%R-%d-%m-%Y` LogFile=/root/HDstatusLog.log echo disk is good! $mdate >> $LogFile ...

  5. sqlserver日志文件

    过程:   昨天下午数据库奔溃,表现就是连不上数据库了,重启服务之后好了. 查询日文文件 , “Autogrow of file 'XX_log' in database 'XX' was cance ...

  6. shell脚本 定期删除日志

    定期删除日志: 然后建立清除日志文件的shell脚本,文件名为clean_log只保留最近三天的日志     #! /bin/bashlogdir=/var/log/httpdcd ${logdir} ...

  7. shell脚本切割tomcat的日志文件

    鉴于在调试logback和log4j的文件切割一直无法成功,随性用shell写个脚本用来切割tomcat下的日志文件(大家如果有在logback或log4j使用文件切割成功的话,可以留下使用方式,先谢 ...

  8. 【Shell实战】定期清理日志文件的shell脚本

    功能描述:清理/var/log/路径下的messages历史日志文件(messages-date),但不清理messages文件本身 依赖要求:服务器上安装了bc模块 # clean_logs.sh ...

  9. Shell执行将脚本里的变量打印到指定日志文件

    首先需要定位获取任务的运行日志或者报错信息,才能定位问题. 通过shell调用有些脚本的话,日志信息会打印在shell里.不过也有用户在shell里调用正常,但是到crontab调用的时候就出错并且没 ...

随机推荐

  1. 传统远程注入线程,加载DLL

    代码根据<windows黑客编程技术详解>来的   远程DLL注入:把我们的恶意DLL强制注入到正常的进程中   每个程序执行时都会调用kernal32.dll,加载DLL时,通过Load ...

  2. vue文字间歇无缝向上滚动

    公司的管理系统中有"文字间歇无缝向上滚动"的需求,现在这种需求基本在项目开发中已经消失了,没什么新颖的,但架不住公司高层喜欢这种玩意儿,所以,作为开发人员,即使你有一百个不乐意,谁 ...

  3. UGUI源码之Selectable

    Selectable是Button.InputField.Toggle.ScrollBar.Slider.Dropdown的基类. Selectable的继承的类与接口如下: public class ...

  4. 枚举 + exgcd

    题意:已知xi=(a*xi-1+b) mod 10001,且告诉你x1,x3.........x2*t-1,让你求出其偶数列 思路分析 : 题目所要求的的是对 10001 取余,由模运算的性质可知,a ...

  5. html5中的Web Storage

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage.sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有 ...

  6. linux入门系列8--shell编程

    本文将结合前面介绍的Linux命令.管道符等知识,通过VI编辑器编写Shell脚本,实现能自动化工作的脚本文件. 在讲解Linux常用命令"linux入门系列5--新手必会的linux命令& ...

  7. redis 5种类型

    redis可以不严谨的看成: redis: { name: value, name: value, } value的数据类型: 1.字典 2.列表 3.字符串 4.集合 5.有序集合 注意: redi ...

  8. 多级反向代理java获取真实IP地址

    public static String getIpAddress(HttpServletRequest request){ String ip = request.getHeader("x ...

  9. RocketMQ 实战之快速入门

    原文地址:https://www.jianshu.com/p/824066d70da8 最近 RocketMQ 刚刚上生产环境,闲暇之时在这里做一些分享,主要目的是让初学者能快速上手RocketMQ. ...

  10. IO系统-文件与目录操作

    1.文件内核数据结构 一个打开的文件在内核中使用三种数据结构表示: (1)文件描述符表 文件描述符标志 文件表项指针 (2)文件表项: 文件状态标志:读.写.追加.同步和非阻塞等状态标志 当前文件偏移 ...