日志文件删除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 ...
随机推荐
- Apple Watch Series 6 全天候视网膜显示屏和全天候高度计是什么鬼
Apple Watch Series 6 全天候视网膜显示屏和全天候高度计是什么鬼 Apple Watch Series 6 / Apple Watch Series 5 全天候视网膜显示屏 LTPO ...
- CSS transition & shorthand property order
CSS transition & shorthand property order shorthand property https://developer.mozilla.org/en-US ...
- css dark theme & js theme checker
css dark theme & js theme checker live demo https://codepen.io/xgqfrms/pen/GRprYLm <!DOCTYPE ...
- uniapp 发起网络请求
推荐下我写的uni-http 创建http-config.js import Vue from 'vue' const BASE_URL = 'http://xxx.com'; if (process ...
- 比特币等主流货币走势成谜,VAST深受关注
谁也不会想到,2021年的第一个月份,数字货币市场就会如此精彩.先是以比特币为首的主流货币迎来了一波上涨,让很多生态建设者看到了暴富的机会.再是一波大跌,让很多建设者失去了希望.再到后来触底反弹和冲高 ...
- 直播预告 | 全面的审计分析和权限管控——CloudQuery年终发布!
2020年9月,CloudQuery 发布. 针对开发.运维人员面临的如何高效便捷访问.操作管理数据的问题,我们设计并研发了云原生安全数据操作平台,CloudQuery 就此诞生! 2020年结束之际 ...
- Baidu Apollo use: command " rosbag " not fonud
https://github.com/ApolloAuto/apollo/issues/181 1.If using dev docker env, you need run apollo.sh bu ...
- 手把手教你Spring Boot整合Mybatis Plus和Swagger2
前言:如果你是初学者,请完全按照我的教程以及代码来搭建(文末会附上完整的项目代码包,你可以直接下载我提供的完整项目代码包然后自行体验!),为了照顾初学者所以贴图比较多,请耐心跟着教程来,希望这个项目D ...
- Oracle VM VirtualBox安装CentOS7
安装VirtualBox6.0 下载地址:https://www.virtualbox.org/ 新建虚拟机 类型:Linux 版本:Other Linux(64-bit)----如果没有出现64-b ...
- Vue学习笔记-chrome84版本浏览器跨域设置
一 使用环境: windows 7 64位操作系统 二 chrome84版本浏览器跨域设置 报错问题:Indicate whether to send a cookie in a cross- ...