高级的网站建设wordpress离线浏览
高级的网站建设,wordpress离线浏览,怎么才能在百度上打广告,平乡县网站建设背景
上一篇文章用Linux自带的logrotate来轮转日志#xff0c;确实方便#xff0c;但它会改变当前日志文件的指针#xff0c;因为它的机制是重新创建当前日志文件。在有些情况下#xff0c;会出现奇怪的问题。比如一直打开当前日志文件不关闭的业务系统会受影响。
解决
…背景上一篇文章用Linux自带的logrotate来轮转日志确实方便但它会改变当前日志文件的指针因为它的机制是重新创建当前日志文件。在有些情况下会出现奇怪的问题。比如一直打开当前日志文件不关闭的业务系统会受影响。解决自己写Linux脚本来轮转日志最大的区别是不会重新创建当前日志而是收缩或清空当前日志。轮转#!/bin/bash# 日志轮转脚本 - rotate_log.sh# 使用方法可以放在crontab中每天00:01执行# crontab设置示例1 0 * * * /path/to/rotate_log.sh# 设置日志目录 - 请根据实际情况修改LOG_DIR/myapp/logCURRENT_LOG$LOG_DIR/current.log# 检查日志目录是否存在if[!-d$LOG_DIR];thenecho错误日志目录不存在 -$LOG_DIRexit1fi# 检查当前日志文件是否存在if[!-f$CURRENT_LOG];thenecho警告当前日志文件不存在 -$CURRENT_LOGexit0# 这不是致命错误只是没有日志需要轮转fi# 获取前一天的日期格式YYYY-MM-DD# 注意macOS和Linux的date命令参数可能不同这里使用通用格式YESTERDAY$(date-dyesterday%Y-%m-%d2/dev/null||date-v-1d %Y-%m-%d2/dev/null)if[-z$YESTERDAY];thenecho错误无法获取昨天的日期exit1fi# 备份文件名BACKUP_LOG$LOG_DIR/$YESTERDAY.log# 检查备份文件是否已存在if[-f$BACKUP_LOG];thenecho警告备份文件已存在跳过轮转 -$BACKUP_LOGexit0fi# 复制当前日志到备份文件ifcp$CURRENT_LOG$BACKUP_LOG;thenecho已复制日志到:$BACKUP_LOG# 清空当前日志文件iftruncate -s0$CURRENT_LOG;thenecho已清空当前日志文件:$CURRENT_LOGelse# 如果truncate命令不可用使用其他方法$CURRENT_LOGecho已清空当前日志文件:$CURRENT_LOGfi# 可选压缩备份文件以节省空间# gzip $BACKUP_LOG echo 已压缩备份文件: $BACKUP_LOG.gzecho日志轮转完成于:$(date)exit0elseecho错误无法复制日志文件exit1fi清理旧日志#!/bin/bash# 日志清理脚本 - clean_old_logs.sh# 删除超过7天的日志文件# crontab设置示例0 2 * * * /path/to/clean_old_logs.sh# 设置日志目录 - 请根据实际情况修改LOG_DIR/myapp/log# 设置保留天数DAYS_TO_KEEP7# 检查日志目录是否存在if[!-d$LOG_DIR];thenecho错误日志目录不存在 -$LOG_DIRexit1fi# 切换到日志目录cd$LOG_DIR||{echo错误无法进入日志目录 -$LOG_DIRexit1}# 查找并删除超过7天的.log文件# 注意这里使用find命令的-mtime参数它会根据文件的修改时间来判断# 7 表示7天以前的文件# -name *.log 表示匹配.log文件echo开始清理超过$DAYS_TO_KEEP天的日志文件...# 先列出将要删除的文件用于检查# echo 将要删除的日志文件:# find . -maxdepth 1 -name *.log -type f -mtime $DAYS_TO_KEEP -print# # 询问是否确认删除如果是手动执行# # 如果是crontab自动执行可以移除交互部分# if [ -t 0 ]; then# # 在终端中运行询问确认# read -p 是否确认删除这些文件(y/N): -n 1 -r# echo# if [[ ! $REPLY ~ ^[Yy]$ ]]; then# echo 取消操作# exit 0# fi# fi# 实际执行删除操作DELETED_COUNT$(find.-maxdepth1-name*.log-type f -mtime $DAYS_TO_KEEP -delete -print|wc-l)echo已删除$DELETED_COUNT个过期日志文件echo清理完成于:$(date)# 可选同时清理压缩的日志文件如果使用了压缩# find . -maxdepth 1 -name *.log.gz -type f -mtime $DAYS_TO_KEEP -delete# echo 已清理压缩的日志文件定时执行sudocrontab-e00* * * /myapp/logrotate/rotate_log.sh04* * * /myapp/logrotate/clean_old_logs.sh