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,整理到这吧!
如有不正确之处,还望指正!书写不易,觉得有帮助就点个赞吧!☺☺☺