starts a daemon and restarts it if it
provides a consistent method of
starting, stopping and restarting daemons. If -K
is not provided, then we assume we are
starting the daemon. supervise-daemon
with daemons which do not fork. Also, it uses its own pid file, so the daemon
should not write a pid file, or the pid file passed to
should not be the one the daemon
Here are the options to specify the daemon and how it should start or stop:
- When starting, we write a
pidfile so we know which supervisor to
stop. When stopping we only stop the pid(s) listed in the
- 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:
- wait this number of seconds before restarting a daemon
after it crashes. The default is 0.
- chdir to this directory before starting the
- 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 during a respawn period. If a daemon dies more than this
number of times during a respawn period,
supervise-daemon will give up trying to
respawn it and exit. The default is 10, and 0 means unlimited.
- Modifies the scheduling priority of the daemon.
- Sets the length of a respawn period. The default is 10
seconds. See the description of --respawn-max for more
- chroot to this directory before starting the daemon.
All other paths, such as the path to the daemon, chdir and pidfile,
should be relative to the chroot.
- 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 -r,
--chroot. The logfile can also be a named
- The same thing as -1,
--stdout but with the standard error
can also set the scheduling
priority of the daemon, but the command line option takes precedence.
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.
cannot stop an interpreted daemon
that no longer exists without a pidfile.
first appeared in Debian.
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.