Linux下日志文件过大解决方案

#头条创作挑战赛#

#大有学问#

一、linux的定时任务

通过 crontab -e 命令编辑文件内容,具体语法如下:

[分] [小时] [日期] [月] [星期] 具体任务

其中:

分,表示多少分钟,范围:0-59

小时,表示多少小时,范围:0-23

日期,表示具体在哪一天,范围:1-31

月,表示多少月,范围:1-12

星期,表示多少周,范围:0-7,0和7都代表星期日

还有一些特殊字符,比如:

代表如何时间,比如: 1** 表示每天凌晨1点执行。

/ 代表每隔多久执行一次,比如: */5 **** 表示每隔5分钟执行一次。

, 代表支持多个,比如: 10 7,9,12 *** 表示在每天的7、9、12点10分各执行一次。

代表支持一个范围,比如: 10 7-9 *** 表示在每天的7、8、9点10分各执行一次。

二、功能说明

应用程序的日志会一直输出到日志文件nohup.out里,这个文件也会不断的增大,一直蚕食服务器硬盘。但是,我们都知道,日志对于我们而言是非常重要的,一量应用程序出现bug,或者服务器宕机,我们必须通过日志文件来进行debug或进一步分析。所以,日志文件不能简单的一删了之。这时,我们想到,如果能将日志文件切分该多好,这样我们可以留下重要的日志,而删掉不必要的日志.以下脚本为定时保存最近一个的日志文件,其他的进行了删除。

#!/bin/sh
#执行切割日志文件
# crontab -l 查看当前是否存在任务
# crontab -e 编辑 指定执行哪个脚本以及执行时间
# 0 0 * * * ./ project_corn.sh 每日凌晨执行分割日志脚本
#基础目录
basePath=./project_log
#判断目录是否存在,不存在则创建目录
if [ ! -d $basePath ]
then
mkdir $basePath
else
echo "file already exists"
fi
# influx拷贝日志文件到 昨天的log中
cp ./nohup.out $basePath/`date -d yesterday +%Y%m%d`.log
# 清空日志文件并保持文件可继续写入,无需重启写的进程
cat /dev/null > ./nohup.out
#一月前的文件
historyTime=$(date "+%Y%m%d" -d '1 month ago')
echo ${historyTime}
#实现遍历删除一个月前的日志文件
for file in $basePath/*
do
if test -f $file
then
tmp=${file##*/}
if [ ${historyTime} -gt ${tmp%.*} ]
then
rm -f $basePath/${file##*/}
echo 'rm -f $basePath/'${file##*/}
fi
else
echo $file #是目录
fi
done

展开阅读全文

页面更新:2024-03-28

标签:文件   日志   应用程序   脚本   解决方案   星期   编辑   日期   小时   代表   目录

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top