Looks like systemd does not execute the statements in status) case of the init script 
at all, but just checks if the daemon process exists. My '/etc/init.d/<my own 
daemon> status' did much more, i.e., it checked if the daemon was actually able to 
do some real work.

So far I have had no luck in finding the answer from the web.

You will find the answer here:

* http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/unix-daemon-readiness-protocol-problems.html
* https://freedesktop.org/software/systemd/man/sd_notify.html
* https://freedesktop.org/software/systemd/man/systemd-notify.html
* https://lists.freedesktop.org/archives/systemd-devel/2014-April/018797.html

If you want to make your daemon interoperate with systemd's status mechanism to the extent of having custom status reports, you have to modify your daemon to send readiness notification messages through a socket to the systemd service manager. That way, not only will "/etc/init.d/jh status" report your custom statuses, so too will "systemctl status jh" and (possibly) so too will (some) GUI administration tools.

To do this, you must write a service unit for your service. Sticking with a van Smoorenbug rc script and relying upon the systemd-sysv-generator to write a compatibility service unit on the fly to encapsulate it won't work, for several reasons. For starters, the generator doesn't generate Type=notify service units and uses RemainAfterExit=true (which prevents detection of service abends).

Reply via email to