I was reading over Packaging:SysVInitScript to bring some packages into line with the current guidelines. The template and the text differ a bit on the reload function, or at least aren't very clear. The template includes:
reload() { restart }
[...]
case "$1" in [...] reload) rh_status_q || exit 7 $1 ;;
Later, in the 'Required Actions' section, reload is described:
reload: reload the configuration of the service without actually stopping and restarting the service (if the service does not support this, do nothing)
So, which is preferred? If I have a daemon that doesn't have any way to reload its configuration short of restarting, should we do as the template shows and call restart or should reload() be a no-op?
In many current packages, reload() does a restart if there's no other way to reload the config. For the puppet init scripts I was looking at updating, I think keeping reload() as restart would cause the least amount of surprise, as that's what it does currently. But I'm curious what the prevailing wisdom is.
On another subject, the 'Initialization of Environment Variables' section mentions that init scripts may be run by admins with non-standard environment variables, like PATH, and that the init script should set these to known/default values if needed.
Would it be worth noting that PATH is explicitly set and exported in /etc/init.d/functions, so init scripts which source that don't need to worry about PATH, unless they need to extend the default PATH set in the function library (which is "/sbin:/usr/sbin:/bin:/usr/bin")?
Lastly, does anyone know what tools use (or used) the processname: and config: tags? The current puppet init script contains these, just under description: and I'm wondering whether they are so old that we don't have to bother keeping them any longer. They've been listed as optional tags in /usr/share/doc/initscripts-*/sysvinitfiles for ages. I just don't know of anything that uses them.
On Monday 01 June 2009, Todd Zullinger wrote:
Later, in the 'Required Actions' section, reload is described:
reload: reload the configuration of the service without actually stopping and restarting the service (if the service does not support this, do nothing)
So, which is preferred? If I have a daemon that doesn't have any way to reload its configuration short of restarting, should we do as the template shows and call restart or should reload() be a no-op?
Neither, IMO. Instead, print an error message that "reload" is not supported and exit with status 3. See the template init script in rpmdevtools (invoke rpmdev-newinit if you have >= 7.2), and http://refspecs.linux- foundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
In case of an error while processing any init-script action except for status, the init script shall print an error message and exit with a non- zero status code: [...] 3 unimplemented feature (for example, "reload")
packaging@lists.fedoraproject.org