|SUPERVISE-DAEMON(8)||System Manager's Manual (smm)||SUPERVISE-DAEMON(8)|
starts a daemon and restarts it if it crashes
supervise-daemon provides a consistent
method of starting, stopping and restarting daemons. If
--signal is not
provided, then we assume we are starting the daemon.
supervise-daemon only works with daemons which do
not fork. If your daemon has options to tell it not to fork, it should be
configured to not fork.
Here are the options to specify the daemon and how it should start or stop:
- Start the daemon as the user and update $HOME accordingly or stop daemons owned by the user. You can optionally append a group name here also.
- Print the action(s) that are taken just before doing them.
The options are as follows:
- Run the healthcheck() command, possibly followed by the unhealthy() command every time this number of seconds passes.
- Wait this long before the first health check.
- Wait this number of seconds before restarting a daemon after it crashes. The default is 0.
- chdir to this directory before starting the daemon.
- Set the environment variable VAR to VALUE.
- Start the daemon as in the group.
- Modifies the IO scheduling priority of the daemon. Class can be 0 for none, 1 for real time, 2 for best effort and 3 for idle. Data can be from 0 to 7 inclusive.
- Set the umask of the daemon.
- Sets the maximum number of times a daemon will be respawned. If a daemon
crashes more than this number of times,
supervise-daemonwill give up and exit. The default is 10 and 0 means unlimited.
If respawn-period is also set, more than respawn-max crashes must occur during respawn-period seconds to cause
supervise-daemonto give up and exit.
- Modifies the scheduling priority of the daemon.
- Sets the length of a respawn period. See the description of --respawn-max for more information.
--retrytimeout | signal/timeout
- The retry specification can be either a timeout in seconds or multiple signal/timeout pairs (like SIGTERM/5). If this option is not given, the default is SIGTERM/5.
- chroot to this directory before starting the daemon. All other paths, such as the path to the daemon and chdir should be relative to the chroot.
- Instruct a supervisor to signal the process it is supervising. The process to communicate with is determined by the name of the service taken from the RC_SVCNAME environment variable.
- Start the daemon as the specified user.
- Redirect the standard output of the process to logfile. Must be an
absolute pathname, but relative to the path optionally given with
--chroot. The logfile can also be a named pipe.
- The same thing as
--stdoutbut with the standard error output.
SSD_NICELEVEL can also set the scheduling priority of the daemon, but the command line option takes precedence.
getopt(3) to parse its options, which allows it to accept
the `--' option which will cause it to stop processing options at that
point. Any subsequent arguments are passed as arguments to the daemon to
start and used when finding a daemon to stop or signal.
If respawn-delay, respawn-max and respawn-period are not set correctly, it is possible to trigger a situation in which the supervisor will infinitely try to respawn a daemon. To avoid this, if you change the values of --respawn-delay, --respawn-max or --respawn-period, always make sure the settings mmake sense. For example, a respawn period of 5 seconds with a respawn max of 10 and a respawn delay of 1 second leads to infinite respawning since there can never be 10 respawns within 5 seconds.
Invoking supervise-daemon requires both the RC_SVCNAME environment variable to be set and the name of the service as the first argument on the command line, so it is best to invoke it inside a service script rather than manually.
supervise-daemon first appeared in
This is a complete re-implementation with the process finding code in the OpenRC library (librc, -lrc) so other programs can make use of it.
William Hubbs <email@example.com>
|April 27, 2016||OpenRC|