Files
2026-01-31 23:25:57 +01:00

84 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Author : Allan Christensen
# First Created : 23-11-2021 (DD-MM-YYYY)
# Description : Clears the journal log once a week on Ubuntu 24.04
# License : MIT License
#
# Are we root
#
if [[ $(id -u) -ne 0 ]]; then echo "" && echo "Must be root or use sudo" && echo "" ; exit ; fi
#
# Create cron job
#
cronjob01="0 1 * * 5 root /usr/local/sbin/clear-journal-log >/dev/null 2>&1"
printf "%s\n\n" "$cronjob01" > /etc/cron.d/clear-journal-log
#
# Ensure correct permissions for /etc/cron.d entries
#
chmod 644 /etc/cron.d/clear-journal-log
chown root:root /etc/cron.d/clear-journal-log
#
# Create script executed by cron
#
cat > /usr/local/sbin/clear-journal-log <<'EOF'
#!/usr/bin/env bash
#
# Are we root
#
if [[ $(id -u) -ne 0 ]]; then echo "" && echo "Must be root or use sudo" && echo "" ; exit ; fi
logfile="/var/log/clear-journal.log"
datenow="$(date '+%d-%m-%Y %H:%M')"
line() {
printf '%*s\n' 100 '' | tr ' ' '-'
}
#
# Clear journal log
#
line > "$logfile"
diskusage="$(journalctl --disk-usage 2>/dev/null)"
printf "%s Before Cleanup: %s\n" "$datenow" "$diskusage" >> "$logfile"
journalctl --rotate >/dev/null 2>&1
journalctl --vacuum-time=3d >/dev/null 2>&1
diskusage="$(journalctl --disk-usage 2>/dev/null)"
printf "%s After Cleanup: %s\n" "$datenow" "$diskusage" >> "$logfile"
line >> "$logfile"
#
# All done
#
printf "\nAll Done...\n"
#
# End of script
#
EOF
chmod 755 /usr/local/sbin/clear-journal-log
#
# Restart cron
#
systemctl restart cron.service
#
# All done
#
printf "\nAll Done...\n"
#
# End of script
#