2016-02-02 00:12:58 +05:30
|
|
|
.\" Copyright (c) 2007-2015 The OpenRC Authors.
|
|
|
|
.\" See the Authors file at the top-level directory of this distribution and
|
2021-12-21 06:37:00 +05:30
|
|
|
.\" https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
|
2016-02-02 00:12:58 +05:30
|
|
|
.\"
|
|
|
|
.\" This file is part of OpenRC. It is subject to the license terms in
|
|
|
|
.\" the LICENSE file found in the top-level directory of this
|
2021-12-21 06:37:00 +05:30
|
|
|
.\" distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
|
2016-02-02 00:12:58 +05:30
|
|
|
.\" This file may not be copied, modified, propagated, or distributed
|
|
|
|
.\" except according to the terms contained in the LICENSE file.
|
|
|
|
.\"
|
|
|
|
.Dd April 27, 2016
|
2019-01-02 05:06:40 +05:30
|
|
|
.Dt SUPERVISE-DAEMON 8 SMM
|
2016-02-02 00:12:58 +05:30
|
|
|
.Os OpenRC
|
|
|
|
.Sh NAME
|
|
|
|
.Nm supervise-daemon
|
|
|
|
.Nd starts a daemon and restarts it if it crashes
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.Nm
|
2018-12-04 00:38:25 +05:30
|
|
|
servicename
|
2018-10-10 04:19:02 +05:30
|
|
|
.Fl a , -healthcheck-timer
|
|
|
|
.Ar seconds
|
|
|
|
.Fl A , -healthcheck-delay
|
|
|
|
.Ar seconds
|
2017-05-11 04:31:10 +05:30
|
|
|
.Fl D , -respawn-delay
|
|
|
|
.Ar seconds
|
2016-02-02 00:12:58 +05:30
|
|
|
.Fl d , -chdir
|
|
|
|
.Ar path
|
|
|
|
.Fl e , -env
|
|
|
|
.Ar var=value
|
|
|
|
.Fl g , -group
|
|
|
|
.Ar group
|
|
|
|
.Fl I , -ionice
|
|
|
|
.Ar arg
|
|
|
|
.Fl k , -umask
|
|
|
|
.Ar value
|
2017-05-11 04:31:10 +05:30
|
|
|
.Fl m , -respawn-max
|
|
|
|
.Ar count
|
2016-02-02 00:12:58 +05:30
|
|
|
.Fl N , -nicelevel
|
|
|
|
.Ar level
|
2021-08-01 03:11:57 +05:30
|
|
|
.Fl -oom-score-adj
|
|
|
|
.Ar adj
|
2021-08-14 09:38:07 +05:30
|
|
|
.Fl p , -pidfile
|
|
|
|
.Ar supervisorpidfile
|
2017-05-11 04:31:10 +05:30
|
|
|
.Fl P , -respawn-period
|
|
|
|
.Ar seconds
|
2017-09-06 23:52:30 +05:30
|
|
|
.Fl R , -retry
|
|
|
|
.Ar arg
|
2016-02-02 00:12:58 +05:30
|
|
|
.Fl r , -chroot
|
|
|
|
.Ar chrootpath
|
2017-05-11 04:31:10 +05:30
|
|
|
.Fl u , -user
|
|
|
|
.Ar user
|
2016-02-02 00:12:58 +05:30
|
|
|
.Fl 1 , -stdout
|
|
|
|
.Ar logfile
|
|
|
|
.Fl 2 , -stderr
|
|
|
|
.Ar logfile
|
|
|
|
.Fl S , -start
|
|
|
|
.Ar daemon
|
|
|
|
.Op Fl -
|
|
|
|
.Op Ar arguments
|
|
|
|
.Nm
|
2018-12-04 00:38:25 +05:30
|
|
|
servicename
|
2016-02-02 00:12:58 +05:30
|
|
|
.Fl K , -stop
|
|
|
|
.Ar daemon
|
|
|
|
.Fl r , -chroot
|
|
|
|
.Ar chrootpath
|
2018-11-30 23:15:48 +05:30
|
|
|
.Nm
|
2018-12-04 00:38:25 +05:30
|
|
|
servicename
|
2018-11-30 23:15:48 +05:30
|
|
|
.Fl s , -signal
|
|
|
|
.Ar signal
|
|
|
|
.Fl r , -chroot
|
|
|
|
.Ar chrootpath
|
2016-02-02 00:12:58 +05:30
|
|
|
.Sh DESCRIPTION
|
|
|
|
.Nm
|
|
|
|
provides a consistent method of starting, stopping and restarting
|
|
|
|
daemons. If
|
|
|
|
.Fl K , -stop
|
2018-12-04 00:38:25 +05:30
|
|
|
or
|
|
|
|
.Fl s , -signal
|
2016-02-02 00:12:58 +05:30
|
|
|
is not provided, then we assume we are starting the daemon.
|
|
|
|
.Nm
|
2018-11-30 23:15:48 +05:30
|
|
|
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.
|
2016-02-02 00:12:58 +05:30
|
|
|
.Pp
|
|
|
|
Here are the options to specify the daemon and how it should start or stop:
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It Fl u , -user Ar user Ns Op : Ns Ar group
|
|
|
|
Start the daemon as the
|
|
|
|
.Ar user
|
|
|
|
and update $HOME accordingly or stop daemons
|
|
|
|
owned by the user. You can optionally append a
|
|
|
|
.Ar group
|
|
|
|
name here also.
|
|
|
|
.It Fl v , -verbose
|
|
|
|
Print the action(s) that are taken just before doing them.
|
2019-01-02 05:06:40 +05:30
|
|
|
.El
|
2016-02-02 00:12:58 +05:30
|
|
|
.Pp
|
|
|
|
The options are as follows:
|
|
|
|
.Bl -tag -width indent
|
2019-01-02 05:06:40 +05:30
|
|
|
.It Fl a , -healthcheck-timer Ar seconds
|
2018-10-10 04:19:02 +05:30
|
|
|
Run the healthcheck() command, possibly followed by the unhealthy()
|
|
|
|
command every time this number of seconds passes.
|
2019-01-02 05:06:40 +05:30
|
|
|
.It Fl A , -healthcheck-delay Ar seconds
|
2018-10-10 04:19:02 +05:30
|
|
|
Wait this long before the first health check.
|
2017-05-11 04:31:10 +05:30
|
|
|
.It Fl D , -respawn-delay Ar seconds
|
2019-01-02 05:06:40 +05:30
|
|
|
Wait this number of seconds before restarting a daemon after it crashes.
|
2017-05-11 04:31:10 +05:30
|
|
|
The default is 0.
|
2016-02-02 00:12:58 +05:30
|
|
|
.It Fl d , -chdir Ar path
|
|
|
|
chdir to this directory before starting the daemon.
|
|
|
|
.It Fl e , -env Ar VAR=VALUE
|
|
|
|
Set the environment variable VAR to VALUE.
|
|
|
|
.It Fl g , -group Ar group
|
|
|
|
Start the daemon as in the group.
|
|
|
|
.It Fl I , -ionice Ar class Ns Op : Ns Ar 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.
|
|
|
|
.It Fl k , -umask Ar mode
|
|
|
|
Set the umask of the daemon.
|
2017-05-11 04:31:10 +05:30
|
|
|
.It Fl m , -respawn-max Ar count
|
2018-12-01 04:40:47 +05:30
|
|
|
Sets the maximum number of times a daemon will be respawned. If a daemon
|
|
|
|
crashes more than this number of times,
|
2017-05-11 04:31:10 +05:30
|
|
|
.Nm
|
2018-12-01 04:40:47 +05:30
|
|
|
will give up and exit. The default is 10 and 0 means unlimited.
|
|
|
|
.Pp
|
|
|
|
If respawn-period is also set, more than respawn-max crashes must occur
|
|
|
|
during respawn-period seconds to cause
|
|
|
|
.Nm
|
|
|
|
to give up and exit.
|
2021-08-14 09:38:07 +05:30
|
|
|
.It Fl p , -pidfile Ar supervisorpidfile
|
|
|
|
Sets a path for the supervisor's pid file. Note that this is not the pid
|
|
|
|
file of the process that is being supervised.
|
2016-02-02 00:12:58 +05:30
|
|
|
.It Fl N , -nicelevel Ar level
|
|
|
|
Modifies the scheduling priority of the daemon.
|
2021-08-01 03:11:57 +05:30
|
|
|
.It Fl -oom-score-adj Ar adj
|
|
|
|
Modifies the OOM score adjustment of the daemon.
|
2017-05-11 04:31:10 +05:30
|
|
|
.It Fl P , -respawn-period Ar seconds
|
2018-12-01 04:40:47 +05:30
|
|
|
Sets the length of a respawn period. See the
|
2017-05-11 04:31:10 +05:30
|
|
|
description of --respawn-max for more information.
|
2017-09-06 23:52:30 +05:30
|
|
|
.It Fl R , -retry Ar timeout | Ar signal Ns / Ns Ar timeout
|
|
|
|
The retry specification can be either a timeout in seconds or multiple
|
|
|
|
signal/timeout pairs (like SIGTERM/5).
|
2018-03-13 04:52:05 +05:30
|
|
|
If this option is not given, the default is SIGTERM/5.
|
2016-02-02 00:12:58 +05:30
|
|
|
.It Fl r , -chroot Ar path
|
|
|
|
chroot to this directory before starting the daemon. All other paths, such
|
2018-11-16 01:45:06 +05:30
|
|
|
as the path to the daemon and chdir should be relative to the chroot.
|
2018-12-04 00:38:25 +05:30
|
|
|
.It Fl , -signal Ar signal
|
|
|
|
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.
|
2016-02-02 00:12:58 +05:30
|
|
|
.It Fl u , -user Ar user
|
|
|
|
Start the daemon as the specified user.
|
|
|
|
.It Fl 1 , -stdout Ar logfile
|
|
|
|
Redirect the standard output of the process to logfile.
|
|
|
|
Must be an absolute pathname, but relative to the path optionally given with
|
|
|
|
.Fl r , -chroot .
|
|
|
|
The logfile can also be a named pipe.
|
|
|
|
.It Fl 2 , -stderr Ar logfile
|
|
|
|
The same thing as
|
|
|
|
.Fl 1 , -stdout
|
|
|
|
but with the standard error output.
|
|
|
|
.El
|
|
|
|
.Sh ENVIRONMENT
|
2021-08-01 02:43:21 +05:30
|
|
|
.Va SSD_IONICELEVEL
|
|
|
|
can also set the IO scheduling priority of the daemon, but the command line
|
|
|
|
option takes precedence.
|
|
|
|
.Pp
|
2016-02-02 00:12:58 +05:30
|
|
|
.Va SSD_NICELEVEL
|
|
|
|
can also set the scheduling priority of the daemon, but the command line
|
|
|
|
option takes precedence.
|
2021-08-01 03:11:57 +05:30
|
|
|
.Pp
|
|
|
|
.Va SSD_OOM_SCORE_ADJ
|
|
|
|
can also set the OOM score adjustment of the daemon, but the command line
|
|
|
|
option takes precedence.
|
2016-02-02 00:12:58 +05:30
|
|
|
.Sh NOTE
|
|
|
|
.Nm
|
|
|
|
uses
|
|
|
|
.Xr 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.
|
2017-05-11 04:31:10 +05:30
|
|
|
.Sh NOTE
|
|
|
|
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.
|
2018-12-04 00:38:25 +05:30
|
|
|
.Sh NOTE
|
|
|
|
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.
|
2016-02-02 00:12:58 +05:30
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr chdir 2 ,
|
|
|
|
.Xr chroot 2 ,
|
|
|
|
.Xr getopt 3 ,
|
|
|
|
.Xr nice 2 ,
|
|
|
|
.Sh HISTORY
|
|
|
|
.Nm
|
|
|
|
first appeared in Debian.
|
|
|
|
.Pp
|
|
|
|
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.
|
|
|
|
.Sh AUTHORS
|
|
|
|
.An William Hubbs <w.d.hubbs@gmail.com>
|