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