aboutsummaryrefslogtreecommitdiffstats
path: root/rc.d/init.d/functions
diff options
context:
space:
mode:
Diffstat (limited to 'rc.d/init.d/functions')
-rw-r--r--rc.d/init.d/functions14
1 files changed, 13 insertions, 1 deletions
diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions
index fdf58bd0..ddb89cd5 100644
--- a/rc.d/init.d/functions
+++ b/rc.d/init.d/functions
@@ -57,6 +57,10 @@ systemctl_redirect () {
options="$options --no-block"
fi
+ if systemctl show -p LoadState "$prog.service" | grep -q 'not-found' ; then
+ action $"Reloading systemd: " /bin/systemctl daemon-reload
+ fi
+
action "$s" /bin/systemctl $options $command "$prog.service"
}
@@ -480,7 +484,14 @@ status() {
if [ "$_use_systemctl" = "1" ]; then
systemctl status ${0##*/}.service
- return $?
+ ret=$?
+ # LSB daemons that dies abnormally in systemd looks alive in systemd's eyes due to RemainAfterExit=yes
+ # lets adjust the reality a little bit
+ if systemctl show -p ActiveState ${0##*/}.service | grep -q '=active$' && \
+ systemctl show -p SubState ${0##*/}.service | grep -q '=exited$' ; then
+ ret=3
+ fi
+ return $ret
fi
# First try "pidof"
@@ -702,4 +713,5 @@ if [ "$_use_systemctl" = "1" ]; then
fi
strstr "$(cat /proc/cmdline)" "rc.debug" && set -x
+return 0