supervise-daemon(8) starts a daemon and restarts it if it crashes


-d , -chdir path -e , -env var=value -g , -group group -I , -ionice arg -k , -umask value -N , -nicelevel level -p , -pidfile pidfile -u , -user user -r , -chroot chrootpath -1 , -stdout logfile -2 , -stderr logfile -S , -start daemon [- ] [arguments ]
-K , -stop daemon -p , -pidfile pidfile -r , -chroot chrootpath


provides a consistent method of starting, stopping and restarting daemons. If -K , -stop is not provided, then we assume we are starting the daemon. only works 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 writes.

Here are the options to specify the daemon and how it should start or stop:

-p , -pidfile pidfile
When starting, we write a pidfile so we know which supervisor to stop. When stopping we only stop the pid(s) listed in the pidfile
-u , -user user [: group ]
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.
-v , -verbose
Print the action(s) that are taken just before doing them.

The options are as follows:

-d , -chdir path
chdir to this directory before starting the daemon.
-e , -env VAR=VALUE
Set the environment variable VAR to VALUE.
-g , -group group
Start the daemon as in the group.
-I , -ionice class [: data ]
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.
-k , -umask mode
Set the umask of the daemon.
-N , -nicelevel level
Modifies the scheduling priority of the daemon.
-r , -chroot path
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.
-u , -user user
Start the daemon as the specified user.
-1 , -stdout logfile
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 pipe.
-2 , -stderr logfile
The same thing as -1 , -stdout but with the standard error output.


SSD_NICELEVEL can also set the scheduling priority of the daemon, but the command line option takes precedence.


uses 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.


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.


An William Hubbs <[email protected]>