Linux定时任务切割日志

Linux定时任务切割日志

    • 一、需解决问题
    • 二、编写shell脚本
    • 三、设置Linux定时器
    • 四、简要说明

一、需解决问题

Linux环境使用nohup启动jar包,输出的日志文件log.out,日志文件过大问题

二、编写shell脚本

创建splitLog.sh脚本文件

cd /usr/business
touch splitLog.sh
vim splitLog.sh

将下面的内容对应复制在splitLog.sh文件中

# Linux 切割日志文件
# 设置日志根路径,即日志文件log.out存放的路径,切割生成日志路径为根路径下的logs
log_path = /usr/business
# 设置切割文件格式:年月日
split_date = `date -d "0 day" "+%Y%m%d"`
cd $log_path
echo $log_path
echo $split_date

# 日志文件名:log.out,也可定义为 log.log文件,对应修改即可
# 以500M为基准切割日志到logs文件中,格式为:20200101/0000、20200101/0001,依次累加
do_split(){
    [ ! -d logs/${split_date} ] && mkdir -p logs/${split_date}
    split -b 500M -d -a 4 ./log.out ./logs/${split_date}/
    if [ $? -eq 0 ];then
        echo "split is finished!"
    else
        echo "split is failed!"
        exit 1
    fi
}

# 清空日志文件
do_del_log(){
    cat /dev/null > log.out
}

if do_split ;then
    do_del_log
    echo "nohup log is split Success"
else
    echo "nohup log is split Failure"
    exit 2
fi

保存即可
部分参数说明:
log_path:项目所在路径
split_date:切割所需文件路径格式,默认年月日
log.out:nohup生成的日志文件名

三、设置Linux定时器

脚本已经有了,就需要定时执行该脚本,进行日志切割。
1、在XShell中执行命令,进入编辑器

crontab -e

2、编辑内容
设置日志切割在每天23:55进行

#定时执行切割日志的脚本,每天23:55执行
55 23 * * * sh /usr/business/splitLog.sh

保存并退出(Esc :wq)编辑器即可。
3、查询定时器

crontab -l

四、简要说明

Linux添加定时切割日志的任务操作步骤
1.将 /usr/business 目录下的 log.out 日志备份
2.将修改好的 splitLog.sh 放置在 /usr/business 目录下
3.执行命令(类似vi编辑):crontab -e
4.在编辑器添加定时任务:55 23 * * * sh /usr/business/splitLog.sh
#定时执行切割日志的脚本,每天23:55执行
5.保存并且退出编辑器

OK,整理到这吧!

如有不正确之处,还望指正!书写不易,觉得有帮助就点个赞吧!☺☺☺

你可能感兴趣的:(工作总结,Linux,linux,服务器,运维)