122 lines
3.2 KiB
Bash
122 lines
3.2 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
# ----------------------------------------------------------------------------------------------
|
||
# ------------- Clear Unraid system logs and Docker container logs safely ----------------------
|
||
# ----------------------------------------------------------------------------------------------
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
||
source "$SCRIPT_DIR/../Master.conf"
|
||
source "$SCRIPT_DIR/../common.sh"
|
||
|
||
parse_args "$@"
|
||
|
||
# STATUS MODE
|
||
if [[ "$SHOW_STATUS" == true ]]; then
|
||
echo
|
||
echo "=================================================="
|
||
echo " ℹ️ LOG CLEANER STATUS"
|
||
echo "--------------------------------------------------"
|
||
echo " 📄 System Logs: ${LOG_FILES[*]}"
|
||
echo " 🐳 Docker Logs: /var/lib/docker/containers"
|
||
echo " 🧪 Dry Run: $DRY_RUN"
|
||
echo "=================================================="
|
||
exit 0
|
||
fi
|
||
|
||
# CONFIG
|
||
LOG_FILES=("${LOG_FILES[@]:-/var/log/syslog /var/log/messages /var/log/dmesg}")
|
||
|
||
# ROOT CHECK
|
||
if [[ "$EUID" -ne 0 ]]; then
|
||
error "🔴 Must be run as root"
|
||
fi
|
||
|
||
# HEADER
|
||
echo
|
||
echo "============================================================"
|
||
echo " 🚀 LOG CLEANER STARTING"
|
||
echo "------------------------------------------------------------"
|
||
echo " 📄 System Logs: ${LOG_FILES[*]}"
|
||
echo " 🐳 Docker Logs: enabled"
|
||
echo " 🧪 Dry Run: $DRY_RUN"
|
||
echo "============================================================"
|
||
|
||
log "ℹ️ Starting log cleanup"
|
||
|
||
# FUNCTIONS
|
||
clear_file() {
|
||
local file="$1"
|
||
|
||
if [[ ! -f "$file" ]]; then
|
||
warn "🟡 Not found: $file"
|
||
return
|
||
fi
|
||
|
||
if [[ "$DRY_RUN" == true ]]; then
|
||
warn "🧪 Would clear: $file"
|
||
else
|
||
: > "$file"
|
||
info "🟢 Cleared: $file"
|
||
fi
|
||
}
|
||
|
||
clear_docker_logs() {
|
||
|
||
if [[ ! -d /var/lib/docker/containers ]]; then
|
||
warn "🟡 Docker directory not found — skipping"
|
||
return
|
||
fi
|
||
|
||
local files
|
||
files=$(find /var/lib/docker/containers/ -name "*-json.log" 2>/dev/null || true)
|
||
|
||
if [[ -z "$files" ]]; then
|
||
warn "🟡 No Docker logs found"
|
||
return
|
||
fi
|
||
|
||
for file in $files; do
|
||
if [[ "$DRY_RUN" == true ]]; then
|
||
warn "🧪 Would clear Docker log: $file"
|
||
else
|
||
: > "$file"
|
||
info "🟢 Cleared Docker log: $file"
|
||
fi
|
||
done
|
||
}
|
||
|
||
# EXECUTION
|
||
START_TIME=$(date +%s)
|
||
|
||
for log in "${LOG_FILES[@]}"; do
|
||
clear_file "$log"
|
||
done
|
||
|
||
clear_docker_logs
|
||
|
||
END_TIME=$(date +%s)
|
||
DURATION=$((END_TIME - START_TIME))
|
||
|
||
# SUMMARY
|
||
echo
|
||
echo "============================================================"
|
||
|
||
if [[ "$DRY_RUN" == true ]]; then
|
||
echo " 🟡 LOG CLEANER SUMMARY"
|
||
echo "------------------------------------------------------------"
|
||
echo " 📄 Logs: ${LOG_FILES[*]}"
|
||
echo " 🐳 Docker: skipped (dry run)"
|
||
echo " 📡 Status: 🟡 DRY RUN"
|
||
else
|
||
echo " 🟢 LOG CLEANER SUMMARY"
|
||
echo "------------------------------------------------------------"
|
||
echo " 📄 Logs: ${LOG_FILES[*]}"
|
||
echo " 🐳 Docker: cleaned"
|
||
echo " ⏱ Duration: ${DURATION}s"
|
||
echo " 📡 Status: 🟢 SUCCESS"
|
||
fi
|
||
|
||
echo "============================================================"
|
||
|
||
info "ℹ️ Log cleanup complete" |