G. Pape
runit
runsv - starts and monitors a service and optionally an appendant log
service
runsv service
service must be a directory.
runsv
switches to the directory service and starts ./run. if ./run exits and ./finish
exists, runsv starts ./finish. If ./finish doesn't exist or ./finish exits,
runsv restarts ./run.
If ./run or ./finish exit immediatly, runsv waits a second
before starting ./finish or restarting ./run.
If the file service/down exists,
runsv does not start ./run immediately. The control interface (see below)
can be used to start the service and to give other commands to runsv.
If
the directory service/log exists, runsv creates a pipe, redirects service/run's
and service/finish's standard output to the pipe, switches to the directory
service/log and starts ./run (and ./finish) exactly as described above for
the service directory. The standard input of the log service a redirected
to read from the pipe.
runsv maintains status information in a binary format
compatible to supervise(8) in service/supervise/status and service/log/supervise/status,
and in a human-readable format in service/supervise/stat, service/log/supervise/stat,
service/supervise/pid, service/log/supervise/pid.
The named pipes
service/supervise/control, and (optionally) service/log/supervise/control
are provided to give commands to runsv. You can use svc(8) to control the
service or just write one of the following characters to the named pipe:
- u
- Up. If the service is not running, start it. If the service stops, restart
it.
- d
- Down. If the service is running, send it a TERM signal. If ./run exits,
start ./finish if it exists. After it stops, do not restart service.
- o
- Once.
If the service is not running, start it. Do not restart it if it stops.
- p
- Pause. If the service is running, send it a STOP signal.
- c
- Continue. If the
service is running, send it a CONT signal.
- h
- Hangup. If the service is running,
send it a HUP signal.
- a
- Alarm. If the service is running, send it a ALRM
signal.
- i
- Interrupt. If the service is running, send it a INT signal.
- User-defined
1. If the service is running, send it a USR1 signal.
- User-defined 2. If the
service is running, send it a USR2 signal.
- t
- Terminate. If the service is
running, send it a TERM signal.
- k
- Kill. If the service is running, send it
a KILL signal.
- x or e
- Exit. If the service is running, send it a TERM signal.
Do not restart the service. If the service is down, and no log service exists,
runsv exits. If the service is down and a log service exists, send a TERM
signal to the log service. If the log service is down, runsv exits. This
command is ignored if it is given to service/log/supervise/control.
For
example, to send a TERM signal to /service/socklog-unix, either do # svc
-t /service/socklog-unix
or
# echo -n t >/service/socklog-unix/supervise/control
If echo(1) on your systems does not provide the -n option, leave it out,
runsv ignores unknown characters written to the control pipe. echo(1) usually
blocks if no runsv process is running in the service directory.
If
runsv receives a TERM signal, it acts as if the character x was written
to the control pipe.
runsv exits 111 on an error on startup or
if another runsv is running in service.
runsv exits 0 if it was told to
exit.
runit(8), runit-init(8), runsvdir(8), svc(8), supervise(8)
http://smarden.org/runit/
http://cr.yp.to/daemontools.html
Gerrit Pape <pape@smarden.org>
Table of Contents