]> code.delx.au - monosys/commitdiff
healthcheck improvements for system user units
authorJames Bunton <jamesbunton@delx.au>
Sun, 18 Feb 2024 12:43:59 +0000 (23:43 +1100)
committerJames Bunton <jamesbunton@delx.au>
Sun, 18 Feb 2024 12:43:59 +0000 (23:43 +1100)
healthcheck/systemd-user-timers [deleted file]
healthcheck/systemd-user-units

diff --git a/healthcheck/systemd-user-timers b/healthcheck/systemd-user-timers
deleted file mode 100755 (executable)
index e4679e7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-cd ~/.config/systemd/user/ &> /dev/null || exit 0
-
-error=0
-for timer in *.timer; do
-    if ! systemctl --user is-enabled "$timer" > /dev/null; then
-        echo "disabled timer $timer"
-        error=1
-    fi
-    if ! systemctl --user is-active "$timer" > /dev/null; then
-        echo "inactive timer $timer"
-        error=1
-    fi
-done
-
-exit "$error"
index ddc155189a74046793146a3b7d7f9ea4e21ffd8d..4322734ff9f2e4b795bb8a7018c81737b6b7c18f 100755 (executable)
@@ -1,9 +1,34 @@
 #!/bin/bash
 
-if systemctl --user is-system-running > /dev/null; then
-    exit 0
-fi
+users="$(systemctl list-units | \
+    sed -nE 's/.*user@([0-9]+)\.service .*loaded active running.*/\1/p' | \
+    xargs -n1 id -un)"
 
-echo -e "# systemctl --user --failed"
-systemctl --user --failed
-exit 1
+error=0
+for user in $users; do
+    homedir="$(getent passwd "$user"|cut -d: -f6)"
+    for timer in "$homedir"/.config/systemd/user/*.timer; do
+        if ! [ -f "$timer" ]; then
+            continue
+        fi
+        timerunit="$(basename "$timer")"
+        if ! systemctl --user -M"$user@" is-enabled "$timerunit" > /dev/null; then
+            echo "disabled timer $timer"
+            error=1
+        fi
+        if ! systemctl --user -M"$user@" is-active "$timerunit" > /dev/null; then
+            echo "inactive timer $timer"
+            error=1
+        fi
+    done
+
+    if systemctl --user -M "$user@" is-system-running > /dev/null; then
+        continue
+    fi
+
+    echo -e "# systemctl --user -M "$user@" --failed"
+    systemctl --user -M "$user@" --failed
+    error=1
+done
+
+exit "$error"