首页 > 系统相关 >Linux通用性-日志切割脚本

Linux通用性-日志切割脚本

时间:2024-08-29 16:48:45浏览次数:10  
标签:bin 通用性 echo file Linux 日志 backup dir

一、公司提供的参考脚本:

#!/bin/bash
# 定义需要清理的文件
log_file=(
"/mpjava/ly.mp.dfpv.acc.biz/bin/nohup.out"
"/mpjava/ly.mp.dfpv.acc.service/bin/nohup.out"
)
# 获取当天日期
date_now=$(date +%Y%m%d)

for file_dir in $log_file
do
   # 获取文件路径
   dir=$(dirname $file_dir)
   # 获取文件名
   file_name_new=$(basename $file_dir)
   # 创建备份目录
   mkdir -p ${dir}/backup
   # 备份日志
   cp ${file_dir} ${dir}/backup/${date_now}_${file_name_new}
   # 清空日志
   echo "" > ${file_dir}
   # 删除历史
   cd ${dir}/backup/ &&  find . -type f -mtime +6 -exec rm -f {} \;
done

验证结果:并未验证成功

二、自己改进后脚本:

#!/bin/bash

# 定义需要清理的文件
log_file=(
    "/mpjava/ly.mp.dfpv.acc.biz/bin/nohup.out"
    "/mpjava/ly.mp.dfpv.acc.service/bin/nohup.out"
)

# 获取当前日期和时间,用于备份文件名中包含时间戳
date_now=$(date +%Y%m%d_%H%M)

for file_dir in "${log_file[@]}"
do
    if [[ ! -f "$file_dir" ]]; then
        echo "Warning: File $file_dir does not exist, skipping."
        continue
    fi

    # 获取文件路径和文件名
    dir=$(dirname "$file_dir")
    file_name_new=$(basename "$file_dir")

    # 创建备份目录
    mkdir -p "${dir}/backup"

    # 备份日志,添加时间戳避免覆盖
    backup_file="${dir}/backup/${date_now}_${file_name_new}"
    cp "$file_dir" "$backup_file" && echo "Backup created: $backup_file" || echo "Error: Failed to backup $file_dir"

    # 清空日志
    > "$file_dir" && echo "Log cleared: $file_dir" || echo "Error: Failed to clear log $file_dir"

    # 删除超过7天的日志
    find "${dir}/backup" -type f -mtime +6 -exec rm -f {} \; &>/dev/null
    if [[ $? -eq 0 ]]; then
        echo "Old logs removed from ${dir}/backup"
    else
        echo "Error occurred while removing old logs from ${dir}/backup"
    fi
done

脚本执行过程:
执行脚本前:

执行脚本后:

结论:这个脚本是通用性脚本,nginx、各中间件、应用服务等日志清理都可以使用,只需要修改log_file变量为自己环境具体路径 和 日志文件即可

三、配置定时任务
1、打开当前用户的crontab文件:
crontab -e

2、添加定时任务(每天凌晨1点执行):
0 1 * * * /path/to/your/Log_cutting.sh
这里 /path/to/your/script.sh 应该替换为你的脚本实际所在的路径。

3、保存并关闭crontab文件:保存更改并退出编辑器。在 vi 或 vim 中,你可以按 ESC 然后输入 :wq 并按 Enter 保存并退出。在 nano 中,你可以按 Ctrl+X,然后按 Y 确认保存,最后按 Enter 退出。

4、确保脚本具有执行权限:
chmod +x /path/to/your/Log_cutting.sh

5、检查cron服务状态:
systemctl status cron
如果服务没有运行,你可以使用以下命令启动它:systemctl start cron

6、查看cron日志:
如果需要调试定时任务,你可以查看 /var/log/cron 日志文件来获取 cron 的日志信息。

7、注意环境问题:
cron 定时任务运行在非登录shell环境中,这意味着它可能没有访问某些环境变量。如果依赖于特定的环境变量,需要在脚本本身或在 crontab 文件中设置这些变量。

例如,如果需要知道 PATH 环境变量,可以在 crontab 文件中设置它,如下所示:

SHELL=/bin/bash
PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin
0 1 * * * /path/to/your/Log_cutting.sh

通过以上步骤,您可以设置一个定时任务来定期执行您的日志清理脚本。

标签:bin,通用性,echo,file,Linux,日志,backup,dir
From: https://www.cnblogs.com/zhoutuo/p/18387012

相关文章

  • Oracle DB 因宿主机(Linux 虚拟机)意外关停,重启数据库步骤
    前期准备:示例的linux版本为:linux9宿主机重启后,如果之前挂载的oraclehome路径及环境变量未生效,需要先重新设置:exportORACLE_SID=FREEexportORAENV_ASK=NO./opt/oracle/product/23ai/dbhomeFree/bin/oraenv前往home路径下的bin文件夹下进行操作:cd$ORACLE_HOME/bin......
  • linux下UsbMon-WireShark之USB协议抓取分析
    usbmon配置使用usbmon抓包分的,是需要内核开启CONFIG_USB_MON=m,重新编译内核,编译ko:makeARCH=arm64CROSS_COMPILE=aarch64-himix100-linux-CONFIG_USB_MON=mM=./drivers/usb/modules设备挂载debugfs,加载ko:mount-tdebugfsdebugfs/sys/kernel/debug/insmod......
  • Linux | Ubuntu 16.04.4 通过docker安装单机FastDFS
    Ubuntu16.04.4通过docker安装单机fastdfs前言很久没有写技术播客了,这是一件很不应该的事情,做完了事情应该有沉淀的。我先说一点前情提要,公司的fastdfs突然就挂了,做过的操作就是日志文件太大了,所以把日志文件给删了,理论上这个动作应该不影响程序运行才对。然后tracker怎么都......
  • 关于linux系统镜像下载 ubuntu centos
    1.直接上观点:目前主流的linux:乌班图(Ubuntu):主要是个人使用,值得一提的是,目前ai服务器很多都选择乌班图,主要还是centos7官网停更了;centos7:这个可是主流,尽管官网停更,但是这些年积累的用户量是最多的,如果不知道自己服务器用什么,那选centos7肯定没错,各类技术文档,各种问题解决,c......
  • Linux系统安装nginx
    目录一、下载软件包二、安装依赖三、安装Nginx四、启动&停止五、配置systemd方式管理NG六、启动&停止七、实验测试一、下载软件包网址:https://nginx.org/二、安装依赖yum-yinstallgccpcre-develzlib-developensslopenssl-devel三、安装Nginx#解压tar......
  • 3.3.1 Linux中断的使能与屏蔽
    点击查看系列文章 =》 InterruptPipeline系列文章大纲-CSDN博客3.3.1Linux中断的使能与屏蔽3.3.1.1 中断使能与屏蔽的三重关卡        本章的主题是hard_local_irq_disable(),它是对中断的关闭操作。为了彻底搞清楚中断关闭的机制,这里先对Linux使能与屏蔽中断的......
  • 如何查看 Kubernetes 的操作审计日志?
    极狐GitLab通过KubernetesAgent对Kubernetes集群进行管理。整体的步骤为KubernetesAgent的注册、安装。当然,也可以直接对Agent进行删除。不管是添加还是删除,后台都会有对应的审计日志,方便对Kubernetes集群的操作进行安全审计。下面分享审计日志的查看。注意:极狐GitL......
  • 关于linux 中断的嵌套
    在Linux系统中,关于中断嵌套的问题,我们可以从以下几个方面进行说明:###一、Linux中断处理的基本机制Linux系统中的中断是一种异步事件处理机制,用于处理硬件设备或其他系统事件引起的中断请求。中断处理程序(InterruptServiceRoutine,ISR)是操作系统内核中用于响应和处理这些中断......
  • Linux日志查看命令,大日志文件排查问题
    查询关键日志行号,再根据行号查询 cat-ncatalina.out|grep15153294092 cat-ncatalina.out|tail-n+3230539|head-n10 tail-n+3230539表示查询3230539行之后的日志 head-n10则表示在前面的查询结果里再查前10条记录 查看指定时间段内的日志 grep'06-2512:08'......
  • Linux--GFS分布式文件系统
    ​ ......