I'm pleased to announce the release of rc-shim v0.2, a small script that is useful for adding supervision to existing installations using SysV-styled rc scripts. The script replaces existing /etc/init.d scripts with a shim that interfaces to a supervisor of your choice. It should support any daemontools-alike supervisor.

Since the 0.1 announcement, the following has changed:

* Fixed several bugs in the 0.1 version that affected starting, stopping, and reporting status.

* The "reload" option has been removed as it was not compliant with the LSB 3.1 standard for arguments accepted by rc scripts. It has been replaced with a stub for "force-reload". The "force-reload" option requires customization to be used correctly, and currently performs a no-op. This is by design.

* The shim header was altered to make it minimally compliant with LSB 3.1 specifications. It should allow the shim to work with tools that alter runlevel settings. So far it has been successfully tested with Debian's update-rc.d program.

* The shim now correctly sets up and tears down symlinks in the service scan directory with each start/stop.

* The shim now has the option to use asynchronous start. This is a trade-off between verification that the supervisor has started, and the speed at which the shim processes a start request. It is disabled by default, but can be controlled per-script or system-wide. Enabling the option skips verification in return for speeding up a start request, making the assumption that the service scan process will take care of it.

* Added debugging output, which is disabled by default. This is useful during the installation process to confirm that the shim is working correctly with your supervisor and daemon. It is set on a per-script level.


The following limitations still apply:

* You will need to supply your own supervisor and run scripts for this to work.

* The run scripts must be organized into a set of definitions, a set of live run directories, and a set of symlinks in a service scan directory.

* The shim only supports starting a single daemon. If you are replacing an rc script that starts multiple daemons, you will need to create a custom service scan directory and start that to emulate the behavior.

This script should still be considered experimental. It continues to receive minor testing with a live system. If you decide to test it, it is recommended that you simply rename your existing init.d scripts that you are replacing to allow for a rollback, should the shim not function correctly for your installation. Future releases will have additional testing and incremental improvements. Suggestions are welcome.

Reply via email to