日志文件删除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 ...
随机推荐
- google firebase in action
google firebase in action firebase https://console.firebase.google.com/project/_/overview?purchaseBi ...
- img & srcset
img & srcset 性能优化 <img class="fn tj s t u fa ai ht" width="3700" height=& ...
- Azure & FaaS in Action
Azure & FaaS in Action VSCode & Azure azure tenant select subscription Cloud Shell https://a ...
- Flutter 删除AppBar的返回icon
设置automaticallyImplyLeading: false即可,替换可以修改"leading"参数 ... appBar: AppBar( automaticallyIm ...
- 代码小知识之UUID
1.生成UUID(UUID保证对在同一时空中的所有机器都是唯一的,UUID的唯一缺陷在于生成的结果串会比较长.UUID 来作为数据库数据表主键是非常不错的选择,保证每次生成的UUID 是唯一的) UU ...
- oracle 查锁
reference:https://www.cnblogs.com/XQiu/p/5212787.html--以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$ ...
- 五大自动化测试的Python框架
1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中.虽然是由Python开发而来,但 ...
- Python3.x 基础练习题100例(31-40)
练习31: 题目: 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. 程序 ...
- 鸿蒙的js开发模式19:鸿蒙手机下载python服务器端文件的实现
目录:1.承接上篇鸿蒙客户端上传文件2.域名通过内网穿透工具3.python服务器端代码4.鸿蒙手机的界面和业务逻辑5.<鸿蒙的js开发模式>系列文章合集 1.承接上篇鸿蒙客户端上传文件, ...
- js--this指向的相关问题
前言 关于this的指向问题是前端面试中常考的知识点,也是我们开发学习中较难理解的问题.作为JavaScript的基础,需要我们彻底理解这一关键词.this作为JavaScript中非常复复杂的机制, ...