]> code.delx.au - monosys/blobdiff - healthcheck/systemd-user-units
healthcheck improvements for system user units
[monosys] / healthcheck / systemd-user-units
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"