87 lines
2.1 KiB
Bash
87 lines
2.1 KiB
Bash
#!/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
|