All sysv service scripts (i.e. /etc/init.d/ scripts) are converted at runtime into systemd service scripts by the systemd-sysv-generator script; you can find them in /run/systemd/generator*/ directories.
The systemd-sysv-generator script normally does handle sysv script non- zero exit codes as an error, but it handles two of them as a non-error exit: /* Consider two special LSB exit codes a clean exit */ if (s->has_lsb) fprintf(f, "SuccessExitStatus=%i %i\n", EXIT_NOTINSTALLED, EXIT_NOTCONFIGURED); So, this behavior is as-designed in systemd. Any sysv service script returning either "not installed" (5) or "not configured" (6) error codes will be treated as successful/non-error status. I suggest seeing if openNMS's sysv service script can be changed to return an error value other than 5 or 6 - are they aware of this problem? Alternately, you can locally override the default systemd-sysv-generator handling of return values, by creating a directory "/etc/systemd/system/exitcode.service.d" and then creating a file in that directory, for example "/etc/systemd/system/exitcode.service.d/error_on_6.conf", with the contents: [Service] SuccessExitStatus= that will override the generated value (of "5 6") and will cause the 'exitcode' service to return error when the sysv init script returns any non-zero value. I'm marking this bug as 'invalid' for systemd, as this behavior is as designed. If you really believe systemd behavior should be different, I suggest opening a bug with upstream systemd. ** Changed in: systemd (Ubuntu) Status: New => Invalid -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1828883 Title: systemd sysv-compatibility eats exit codes To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1828883/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs