main
yanglc 2025-11-07 10:49:54 +08:00
commit e7f5e836d2
Signed by: yanglc
GPG Key ID: BE76835F00F57D6F
1 changed files with 87 additions and 0 deletions

87
log_setup.sh Normal file
View File

@ -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