diff options
Diffstat (limited to 'rc.d/init.d/functions')
-rw-r--r-- | rc.d/init.d/functions | 14 |
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 |