# phpman > info > runsv

[runsv(8)](https://www.chedong.com/phpMan.php/man/runsv/8/markdown)                    System Manager's Manual                   [runsv(8)](https://www.chedong.com/phpMan.php/man/runsv/8/markdown)

NAME
       runsv  -  starts and monitors a service and optionally an appendant log
       service

SYNOPSIS
       runsv service

DESCRIPTION
       service must be a directory.

       runsv switches to the directory service and starts ./run.  If ./run ex-
       its  and  ./finish  exists, runsv starts ./finish.  If ./finish doesn't
       exist or ./finish exits, runsv restarts ./run.

       If ./run or ./finish exit immediately,  runsv  waits  a  second  before
       starting ./finish or restarting ./run.

       Two  arguments  are  given  to ./finish.  The first one is ./run's exit
       code, or -1 if ./run didn't exit normally.  The second one is the least
       significant  byte  of  the exit status as determined by [waitpid(2)](https://www.chedong.com/phpMan.php/man/waitpid/2/markdown); for
       instance it is 0 if ./run exited normally, and  the  signal  number  if
       ./run was terminated by a signal.  If runsv cannot start ./run for some
       reason, the exit code is 111 and the status is 0.

       If the file service/down exists, runsv does  not  start  ./run  immedi-
       ately.  The control interface (see below) can be used to start the ser-
       vice 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  script.  The
       standard input of the log service is redirected to read from the pipe.

       runsv  maintains  status  information in a binary format (compatible to
       the daemontools' supervise  program)  in  service/supervise/status  and
       service/log/supervise/status,  and  in  a human-readable format in ser-
       vice/supervise/stat, service/log/supervise/stat, service/supervise/pid,
       service/log/supervise/pid.

CONTROL
       The   named  pipes  service/supervise/control,  and  (optionally)  ser-
       vice/log/supervise/control are provided to give commands to runsv.  You
       can use [sv(8)](https://www.chedong.com/phpMan.php/man/sv/8/markdown) 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, and
              then a CONT signal.  If ./run exits, start ./finish  if  it  ex-
              ists.  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.

       q      Quit.  If the service is running, send it a QUIT signal.

       1      User-defined 1.  If the service is running, send it a USR1  sig-
              nal.

       2      User-defined  2.  If the service is running, send it a USR2 sig-
              nal.

       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      Exit.  If the service is running, send it  a  TERM  signal,  and
              then a CONT 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, runsv closes the standard in-
              put of the log service, and waits for it to terminate.   If  the
              log service is down, runsv exits.  This command is ignored if it
              is given to service/log/supervise/control.

       Example: to send a TERM signal to the socklog-unix service, either do
         # sv term /etc/service/socklog-unix
        or
         # printf t >/etc/service/socklog-unix/supervise/control

       [printf(1)](https://www.chedong.com/phpMan.php/man/printf/1/markdown) usually blocks if no runsv process is running in the  service
       directory.

CUSTOMIZE CONTROL
       For  each  control  character  c  sent to the control pipe, runsv first
       checks if service/control/c exists and is executable.  If so, it starts
       service/control/c  and  waits  for it to terminate, before interpreting
       the command.  If the program exits with return code 0,  runsv  refrains
       from  sending  the  service the corresponding signal.  The command o is
       always considered as command u.  On command d  first  service/control/t
       is  checked,  and  then  service/control/d.   On  command  x first ser-
       vice/control/t is checked, and then service/control/x.  The control  of
       the optional log service cannot be customized.

SIGNALS
       If  runsv  receives  a  TERM  signal, it acts as if the character x was
       written to the control pipe.

EXIT CODES
       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.

SEE ALSO
       [sv(8)](https://www.chedong.com/phpMan.php/man/sv/8/markdown),   [chpst(8)](https://www.chedong.com/phpMan.php/man/chpst/8/markdown),  [svlogd(8)](https://www.chedong.com/phpMan.php/man/svlogd/8/markdown),  [runit(8)](https://www.chedong.com/phpMan.php/man/runit/8/markdown),  [runit-init(8)](https://www.chedong.com/phpMan.php/man/runit-init/8/markdown),  [runsvdir(8)](https://www.chedong.com/phpMan.php/man/runsvdir/8/markdown),
       [runsvchdir(8)](https://www.chedong.com/phpMan.php/man/runsvchdir/8/markdown), [utmpset(8)](https://www.chedong.com/phpMan.php/man/utmpset/8/markdown)

       <http://smarden.org/runit/>

AUTHOR
       Gerrit Pape <<pape@smarden.org>>

                                                                      [runsv(8)](https://www.chedong.com/phpMan.php/man/runsv/8/markdown)
