日志文件删除shell脚本
大日志文件切割shell脚本
#!/bin/bash
# ---------------------------------------------------------------------
# 日志文件300M分割,并zip压缩,每个项目仅保留最新30个文件,
# 文件格式:项目名称-年月日时分秒.zip
# Author :
# Date :
# Email :
# Version : 1.0
# ---------------------------------------------------------------------
# 日志目录
LOG_DIR='/log'
# 日志文件名称,支持正则表达式,多个使用“,”分隔
FILE_NAME='*.log'
# 文件切割最大大小,单位MB
MAX_FILE_SIZE=300
# 保留文件数
MAX_FILE_NUM=30
# 压缩包后缀
FILE_SUFFIX=zip
# 提示内容
MESSAGE="Usage: $0 LOG_DIR FILE_NAME MAX_FILE_SIZE MAX_FILE_NUM \nFor Example: $0 /log/ nginx.log 100 30"
while [ $# -ge 2 ]
do
case "$1" in
-d) LOG_DIR=$2; shift 2;;
-f) FILE_NAME=$2; shift 2;;
-s) MAX_FILE_SIZE=$2; shift 2;;
-n) MAX_FILE_NUM=$2; shift 2;;
-t) FILE_SUFFIX=$2; shift 2;;
*) echo "Unknown parameter $1." ; shift 2; continue;;
esac
done
if [ -z "${LOG_DIR}" -o ! -d "${LOG_DIR}" ]; then
echo "请输入文件所在目录"
echo -e ${MESSAGE}
exit 1
fi
LOG_FILE_SIZE=$(ls ${LOG_DIR}'/'${FILE_NAME} | wc -l)
if [ "${LOG_FILE_SIZE}" -eq 0 ]; then
echo "请输入文件名"
echo -e ${MESSAGE}
exit 1
fi
if [ -z "${MAX_FILE_SIZE}" ]; then
echo "请输入文件以多少MB分割"
echo -e ${MESSAGE}
exit 1
fi
if [ -z "${MAX_FILE_NUM}" ]; then
echo "请输入保留多少个压缩文件"
echo -e ${MESSAGE}
exit 1
fi
# -------------------------------------------------
# rolling log file
rolling_file () {
CUR_TIME=$(date +%Y%m%d%H%M%S)
LOG_FILE_LIST=($(ls ${LOG_DIR}/${FILE_NAME}))
cd ${LOG_DIR}
for LOG_FILE in ${LOG_FILE_LIST[@]}
do
BACK_FILE_NAME="${LOG_FILE}-${CUR_TIME}"
# check file data size
LOG_FILE_SIZE=$(stat -c %s ${LOG_FILE})
if [ ${LOG_FILE_SIZE} -gt $((MAX_FILE_SIZE * 1024 * 1024)) ]; then
cp -f ${LOG_FILE} ${BACK_FILE_NAME}
echo "" > ${LOG_FILE}
zip -9q ${BACK_FILE_NAME}.zip ${BACK_FILE_NAME}
rm -f ${BACK_FILE_NAME}
echo -e "Backup success. file: ${BACK_FILE_NAME}.zip"
fi
done
}
# -------------------------------------------------
# delete expire archive files
delete_expire_bak_file () {
LOG_FILE_LIST=($(ls ${LOG_DIR}/${FILE_NAME}))
for LOG_FILE in ${LOG_FILE_LIST[@]}
do
FILE_NAME=$(basename ${LOG_FILE})
CUR_FILE_NUM=$(ls ${LOG_DIR}/${FILE_NAME}*.${FILE_SUFFIX} | wc -l)
if [ ${CUR_FILE_NUM} -gt ${MAX_FILE_NUM} ]; then
DEL_FILE_NUM=$((${CUR_FILE_NUM} - ${MAX_FILE_NUM}))
DEL_FILE_NAME=$(
stat -c %Y,%n ${FILE_NAME}*.${FILE_SUFFIX} | sort -k 1 -t, -n | \
head -n ${DEL_FILE_NUM} | awk -F "," '{print $2}'
)
echo "Delete backup file ${DEL_FILE_NUM} file: \n${DEL_FILE_NAME}"
rm -f ${DEL_FILE_NAME}
fi
done
}
rolling_file
delete_expire_bak_file
小日志文件删除shell脚本
#!/bin/bash
# ------------------------------------------------------------------------------
# 功能:清理新版客服系统go工程运行日志,保留最近3天
# 用法:sh 此脚本 im-customer|im-company|im-static|im-chat-client|im-dbs|im-auto-order-sentinel|consul
# 作者:
# 创建日期:
# ------------------------------------------------------------------------------
# 工程代码
project_code=(${*})
# 保留天数
keep_time='+3'
cs_log_rolling () {
for i in ${!project_code[@]}
do
if [ "${project_code[${i}]}" != "consul" ]; then
cs_log_dir=/data/www/cs/${project_code[${i}]}/logs
find ${cs_log_dir}/ -mtime ${keep_time} -name "${project_code[${i}]}-*.log.gz" -exec rm -f {} \; > /dev/null 2>&1
echo "${project_code[${i}]} log cleanup succeeded !"
sleep 1
fi
done
}
consul_log_rolling () {
if [[ "${project_code[@]}" =~ consul ]]; then
consul_log_dir=/data/log/consul-log
find ${consul_log_dir}/ -mtime ${keep_time} -name "consul-*.log" -exec rm -f {} \; > /dev/null 2>&1
echo "consul log cleanup succeeded !"
fi
}
cs_log_rolling
consul_log_rolling
日志文件删除shell脚本的更多相关文章
- 清除tomcat日志文件的shell脚本
#! /bin/bash d=`date +%F` exec >> /mydata/script/logs/$d>& echo "开始执行清除tomcat日志文件& ...
- 【Shell实战】定期清理日志文件的shell脚本
功能描述:清理/var/log/路径下的messages历史日志文件(messages-date),但不清理messages文件本身 依赖要求:服务器上安装了bc模块 # clean_logs.sh ...
- 运行系统命令而且将输出写到指定日志文件的shell脚本(2)
上一篇是个简单的能够运行而且写入日志的脚本,可是假设放到生产环境上就显得太粗糙了,所以须要进一步的优化: #! /bin/bash if [ -d "/opt/bmc" ] ; t ...
- Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法
一.需求背景 因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合cr ...
- FTP定时批量下载文件(SHELL脚本及使用方法 )
1. 脚本实例 将以下脚本保存为 getftp.sh #!/bin/bash datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 << ...
- FTP定时批量下载文件(SHELL脚本及使用方法 ) (转)--good
#/bin/bash URL="http://192.168.5.100/xxx.php" check() { RESULT=$(curl -s $URL) echo $RESUL ...
- 日志备份的shell脚本
以前工作中写的日志备份的脚本,现记录一下日志备份脚本代码,以后工作中遇到遇到需要备份或者清理日志的时候可以拿来简单修改一下使用,减少工作量. 把备份脚本添加到Linux定时任务中,可以定时执行. 日志 ...
- Centos下Nginx配置WEB访问日志并结合shell脚本定时切割
在一个成熟的WEB系统里,没有日志管理是不可以的,有了日志,可以帮助你得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某个服务或server的性能瓶颈等. ...
- 本地文件与服务器文件同步shell脚本
为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p ...
随机推荐
- 中文域名 & 原理剖析
中文域名 & 原理剖析 https://zh.wikipedia.org/wiki/中文域名 原理 利用浏览器的对字符编码的转换算法,实现 unicode 字符显示! 国际化域名: 就是一个普 ...
- nodejs 显示进度条插件
ora 显示loading.. progress 进度条 progress var ProgressBar = require("progress"); var bar = new ...
- ts 修改readonly参数
readonly name = "xxx"; updateValueAndValidity(): void { // this.name = 'a'; (this as { nam ...
- k8s部署mysql数据持久化
在这里我部署mysql的目的是为了后面将上一篇博客docker打包的el-admin镜像部署到k8s上,所以本文主要是部署mysql并实现持久化. 1.将我们的应用都部署到 el-admin 这个命名 ...
- DBA 的效率加速器——CloudQuery v1.3.2 上线!
嘿,兄弟,我们好久不见,你在哪里 嘿,朋友,如果真的是你,请打声招呼 我说好久不见,你去哪里 你却对我说,我去江湖 我去看 CloudQuery v1.3.2,看看新增了哪些好用的小功能! 一.自动/ ...
- 三万长文50+趣图带你领悟web编程的内功心法:一文带你深入解读HTTP的发展史
看到题目,大家是不是认为根据上一篇(两万字长文50+张趣图带你领悟网络编程的内功心法)一样,其实不然,我们上一边介绍的是网络编程的基本功,有了这些基本功之后,我们就可以在此之上构建更加接近实际应用的w ...
- 你真的懂 MP4 格式吗?
MP4 文件格式又被称为 MPEG-4 Part 14,出自 MPEG-4 标准第 14 部分 .它是一种多媒体格式容器,广泛用于包装视频和音频数据流.海报.字幕和元数据等.(顺便一提,目前流行的视频 ...
- 五大自动化测试的Python框架
1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中.虽然是由Python开发而来,但 ...
- macOS命令行切换Python版本
目录 brew安装anaconda3 anaconda3环境变量设置 安装双版本 命令后切换python环境 pip ide vscode set 参考 brew安装anaconda3 brew ca ...
- HDOJ-1560(迭代加深搜索问题)
DNA sequence HDOJ-1560 *本题是迭代加深搜索问题,主要是要理解题目,题目中一定是有解的,所以为了找最小的解,可以从小的搜索深度开始逐渐增加. *这里有个技巧就是,如果本次指定开始 ...