From 15fc1f447ec446174d9ca26d513a388377bdfba8 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 2 Jul 2018 01:05:21 +0200 Subject: [PATCH] Make logs persistent over reboot and cleanup (#61) * Create hassos-persists-journald * Create hassos-persists-journald.service * Set ln & permission * Enable persists journald * Update hassos-persists-journald --- .../hassos-persists-journald.service | 1 + .../system/hassos-persists-journald.service | 14 +++++++++ .../usr/sbin/hassos-persists-journald | 29 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service create mode 100644 buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service create mode 100755 buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service new file mode 120000 index 000000000..fdc4db7b8 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-persists-journald.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-persists-journald.service \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service new file mode 100644 index 000000000..0f98b1fae --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-persists-journald.service @@ -0,0 +1,14 @@ +[Unit] +Description=HassOS persists journald +Requires=var-log-journal.mount +After=sysinit.target systemd-journald.service +RefuseManualStart=true +RefuseManualStop=true + +[Service] +Type=oneshot +ExecStart=/usr/sbin/hassos-persists-journald +RemainAfterExit=true + +[Install] +WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald b/buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald new file mode 100755 index 000000000..bfb986833 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-persists-journald @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +MACHINE_ID=$(cat /etc/machine-id) +CURRENT_LOGS=/var/log/journal/${MACHINE_ID} + +# Cleanup +if [ ! -d ${CURRENT_LOGS} ]; + rm -rf /var/log/journal/* + exit 0 +fi + +# Loop all logs folder and move +for log_folder in /var/log/journal/*; do + # Not a log folder + if [ ! -d ${log_folder} ]; then + continue + fi + + # Current log folder + if (echo ${log_folder} | grep ${MACHINE_ID}); then + continue + fi + + mv ${log_folder}/* ${CURRENT_LOGS}/ + rm -rf ${log_folder} +done + +journalctl --vacuum-size=20M