commit e7f5e836d26dc6fc44055aef0c2dddea431eb6e1 Author: yanglc Date: Fri Nov 7 10:49:54 2025 +0800 版本1 diff --git a/log_setup.sh b/log_setup.sh new file mode 100644 index 0000000..4b36b54 --- /dev/null +++ b/log_setup.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +# 增强版 logrotate 配置生成脚本 + +create_logrotate_config() { + local log_path="$1" + local user_group="$2" + + # 配置文件名 + local log_name=$(basename "$log_path") + local config_file="/etc/logrotate.d/${log_name}" + + # 构建配置内容 + local config_content="$log_path { + daily + missingok + rotate 30 + compress + delaycompress + notifempty + copytruncate + dateext + dateformat -%Y%m%d" + + if [ -n "$user_group" ]; then + config_content="$config_content + create 644 $user_group" + fi + + config_content="$config_content +}" + + # 写入文件 + echo "$config_content" > "$config_file" + return $? +} + +# 主程序 +echo "==========================================" +echo " logrotate 配置生成工具" +echo "==========================================" + +# 获取日志路径 +read -p "请输入日志文件的完整路径: " log_path +log_path=$(echo "$log_path" | sed 's/^ *//;s/ *$//') # 去除首尾空格 + +if [ -z "$log_path" ]; then + echo "错误:日志文件路径不能为空!" + exit 1 +fi + +# 获取用户组 +read -p "请输入日志文件属主(用户:组),留空则使用系统默认: " user_group +user_group=$(echo "$user_group" | sed 's/^ *//;s/ *$//') + +# 确认信息 +echo "" +echo "配置摘要:" +echo "📁 日志文件: $log_path" +echo "⚙️ 配置文件: /etc/logrotate.d/$(basename "$log_path")" +echo "👤 文件权限: ${user_group:-系统默认}" +echo "" + +read -p "确认创建配置?(y/N): " confirm +if [[ ! $confirm =~ ^[Yy]$ ]]; then + echo "操作已取消" + exit 0 +fi + +# 创建配置 +if create_logrotate_config "$log_path" "$user_group"; then + echo "✅ 配置创建成功!" + echo "" + echo "测试配置:" + echo "sudo logrotate -d /etc/logrotate.d/$(basename "$log_path")" + echo "" + echo "立即执行:" + echo "sudo logrotate -vf /etc/logrotate.d/$(basename "$log_path")" +else + echo "❌ 配置创建失败!" + echo "请检查:" + echo "1. 是否使用 sudo 运行" + echo "2. 磁盘空间是否充足" + echo "3. 目录权限是否正确" + exit 1 +fi +