#!/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