all scripts are now current with common.sh v2.1
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
#!/bin/bash
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# --------------------------------- Clear Logs Script ------------------------------------------
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# Clears unRAID system logs and Docker container logs safely.
|
||||
# Log file paths are configured in Master.conf under LOG_FILES.
|
||||
# Supports --dry-run to preview what would be cleared without making changes.
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
source "$SCRIPT_DIR/../Master.conf"
|
||||
source "$SCRIPT_DIR/../common.sh"
|
||||
|
||||
parse_args "$@"
|
||||
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# ━━━ $ICON_GEAR Setup ━━━
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "━━━ $ICON_GEAR Setup ━━━"
|
||||
|
||||
# ROOT CHECK
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
error "Must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
success "Running as root"
|
||||
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# ━━━ $ICON_SUMMARY Status ━━━
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
if [[ "$SHOW_STATUS" == true ]]; then
|
||||
echo ""
|
||||
echo "━━━━━ $ICON_SUMMARY STATUS ━━━━━"
|
||||
echo "$ICON_HEALTH System Logs: ${LOG_FILES[*]}"
|
||||
echo "$ICON_DOCKER Docker Logs: /var/lib/docker/containers"
|
||||
echo "$ICON_GEAR Dry Run: $DRY_RUN"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# FUNCTIONS
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
|
||||
# Clears a single log file if it exists.
|
||||
# Skips with a warning if the file is not found.
|
||||
clear_file() {
|
||||
local file="$1"
|
||||
|
||||
if [[ ! -f "$file" ]]; then
|
||||
warn "Not found: $file — skipping"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
warn "DRY RUN — would clear: $file"
|
||||
else
|
||||
: > "$file"
|
||||
success "Cleared: $file"
|
||||
fi
|
||||
}
|
||||
|
||||
# Finds and clears all Docker container json log files.
|
||||
# Skips gracefully if Docker directory or log files are not found.
|
||||
clear_docker_logs() {
|
||||
if [[ ! -d /var/lib/docker/containers ]]; then
|
||||
warn "$ICON_DOCKER 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 "$ICON_DOCKER No Docker logs found — skipping"
|
||||
return
|
||||
fi
|
||||
|
||||
while IFS= read -r file; do
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
warn "DRY RUN — would clear Docker log: $file"
|
||||
else
|
||||
: > "$file"
|
||||
success "Cleared Docker log: $(basename "$(dirname "$file")")"
|
||||
fi
|
||||
done <<< "$files"
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# ━━━ $ICON_HEALTH Clear Logs ━━━
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "━━━ $ICON_HEALTH Clear Logs ━━━"
|
||||
echo "$ICON_HEALTH System Logs: ${LOG_FILES[*]}"
|
||||
echo "$ICON_DOCKER Docker Logs: enabled"
|
||||
echo "$ICON_GEAR Dry Run: $DRY_RUN"
|
||||
echo ""
|
||||
|
||||
[[ "$DRY_RUN" == true ]] && warn "DRY RUN — no changes will be made"
|
||||
|
||||
START=$(date +%s)
|
||||
|
||||
for logfile in "${LOG_FILES[@]}"; do
|
||||
clear_file "$logfile"
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "━━━ $ICON_DOCKER Docker ━━━"
|
||||
clear_docker_logs
|
||||
|
||||
END=$(date +%s)
|
||||
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
# ━━━ $ICON_SUMMARY Summary ━━━
|
||||
# -----------------------------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo "━━━━━ $ICON_SUMMARY LOG CLEANER SUMMARY ━━━━━"
|
||||
echo "$ICON_HEALTH System Logs: ${LOG_FILES[*]}"
|
||||
echo "$ICON_DOCKER Docker Logs: $([[ "$DRY_RUN" == true ]] && echo "skipped (dry run)" || echo "cleared")"
|
||||
echo "$ICON_TIME Duration: $(format_duration $((END - START)))"
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
echo "$ICON_WARN Status: DRY RUN — no changes made"
|
||||
else
|
||||
echo "$ICON_DONE Status: $ICON_SUCCESS DONE"
|
||||
fi
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
Reference in New Issue
Block a user