Provided by: supervisor_3.2.0-2ubuntu0.2_all bug

NAME

       echo_supervisord_conf - Supervisor Configuration Documentation

       Supervisor is a client/server system that allows its users to monitor and control a number
       of processes on UNIX-like operating systems.

       It shares some of the same goals of programs like launchd, daemontools, and runit.  Unlike
       some  of these programs, it is not meant to be run as a substitute for init as "process id
       1". Instead it is meant to be used  to  control  processes  related  to  a  project  or  a
       customer, and is meant to start like any other program at boot time.

DOCUMENTATION

   Creating a Configuration File
       Once  the  Supervisor  installation  has  completed, run echo_supervisord_conf.  This will
       print a "sample" Supervisor configuration file to your terminal's stdout.

       Once  you  see  the  file   echoed   to   your   terminal,   reinvoke   the   command   as
       echo_supervisord_conf  >  /etc/supervisord.conf.  This  won't work if you do not have root
       access.

       If you don't have root access, or you'd  rather  not  put  the  supervisord.conf  file  in
       /etc/supervisord.conf`, you can place it in the current directory (echo_supervisord_conf >
       supervisord.conf) and start  supervisord  with  the  -c  flag  in  order  to  specify  the
       configuration file location.

       For  example, supervisord -c supervisord.conf.  Using the -c flag actually is redundant in
       this case, because supervisord searches  the  current  directory  for  a  supervisord.conf
       before it searches any other locations for the file, but it will work.

       Once  you have a configuration file on your filesystem, you can begin modifying it to your
       liking.

   Configuration File
       The Supervisor configuration file is conventionally named supervisord.conf.  It is used by
       both  supervisord  and  supervisorctl.   If  either  application is started without the -c
       option (the option which is used  to  tell  the  application  the  configuration  filename
       explicitly),  the  application  will  look  for  a  file named supervisord.conf within the
       following locations, in the specified order.  It will use the first file it finds.

       1. $CWD/supervisord.conf

       2. $CWD/etc/supervisord.conf

       3. /etc/supervisord.conf

       4. ../etc/supervisord.conf (Relative to the executable)

       5. ../supervisord.conf (Relative to the executable)

       NOTE:
          Some distributions have packaged  Supervisor  with  their  own  customizations.   These
          modified  versions  of  Supervisor may load the configuration file from locations other
          than those  described  here.   Notably,  Ubuntu  packages  have  been  found  that  use
          /etc/supervisor/supervisord.conf.

   File Format
       supervisord.conf is a Windows-INI-style (Python ConfigParser) file.  It has sections (each
       denoted by a [header]) and key / value pairs within the sections.  The sections and  their
       allowable values are described below.

   Environment Variables
       Environment  variables that are present in the environment at the time that supervisord is
       started can be used in the configuration file using the Python  string  expression  syntax
       %(ENV_X)s:

          [program:example]
          command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s

       In  the  example  above, the expression %(ENV_LOGLEVEL)s would be expanded to the value of
       the environment variable LOGLEVEL.

       NOTE:
          In Supervisor 3.2 and later, %(ENV_X)s expressions are supported in  all  options.   In
          prior  versions, some options support them, but most do not.  See the documentation for
          each option below.

   [unix_http_server] Section Settings
       The  supervisord.conf  file  contains  a  section  named  [unix_http_server]  under  which
       configuration parameters for an HTTP server that listens on a UNIX domain socket should be
       inserted.  If the configuration file has no  [unix_http_server]  section,  a  UNIX  domain
       socket  HTTP  server  will  not  be  started.   The  allowable configuration values are as
       follows.

   [unix_http_server] Section Values
       file
          A path to a UNIX domain socket (e.g. /tmp/supervisord.sock) on  which  supervisor  will
          listen  for  HTTP/XML-RPC  requests.   supervisorctl  uses  XML-RPC to communicate with
          supervisord over this port.  This option can include the value %(here)s, which  expands
          to the directory in which the supervisord configuration file was found.

          Default:  None.

          Required:  No.

          Introduced: 3.0

       chmod
          Change  the  UNIX  permission  mode  bits  of  the  UNIX domain socket to this value at
          startup.

          Default: 0700

          Required:  No.

          Introduced: 3.0

       chown
          Change the user and group of the socket file to this value.  May  be  a  UNIX  username
          (e.g. chrism) or a UNIX username and group separated by a colon (e.g. chrism:wheel).

          Default:  Use the username and group of the user who starts supervisord.

          Required:  No.

          Introduced: 3.0

       username
          The username required for authentication to this HTTP server.

          Default:  No username required.

          Required:  No.

          Introduced: 3.0

       password
          The  password required for authentication to this HTTP server.  This can be a cleartext
          password, or can be specified as a SHA-1 hash if prefixed by  the  string  {SHA}.   For
          example, {SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d is the SHA-stored version of the
          password "thepassword".

          Note that hashed password must be in hex format.

          Default:  No password required.

          Required:  No.

          Introduced: 3.0

   [unix_http_server] Section Example
          [unix_http_server]
          file = /tmp/supervisor.sock
          chmod = 0777
          chown= nobody:nogroup
          username = user
          password = 123

   [inet_http_server] Section Settings
       The  supervisord.conf  file  contains  a  section  named  [inet_http_server]  under  which
       configuration parameters for an HTTP server that listens on a TCP (internet) socket should
       be inserted.  If the configuration file has no [inet_http_server] section,  an  inet  HTTP
       server will not be started.  The allowable configuration values are as follows.

   [inet_http_server] Section Values
       port
          A  TCP  host:port  value  or  (e.g. 127.0.0.1:9001) on which supervisor will listen for
          HTTP/XML-RPC requests.  supervisorctl will use XML-RPC to communicate with  supervisord
          over this port.  To listen on all interfaces in the machine, use :9001 or *:9001.

          Default:  No default.

          Required:  Yes.

          Introduced: 3.0

       username
          The username required for authentication to this HTTP server.

          Default:  No username required.

          Required:  No.

          Introduced: 3.0

       password
          The  password required for authentication to this HTTP server.  This can be a cleartext
          password, or can be specified as a SHA-1 hash if prefixed by  the  string  {SHA}.   For
          example, {SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d is the SHA-stored version of the
          password "thepassword".

          Note that hashed password must be in hex format.

          Default:  No password required.

          Required:  No.

          Introduced: 3.0

   [inet_http_server] Section Example
          [inet_http_server]
          port = 127.0.0.1:9001
          username = user
          password = 123

   [supervisord] Section Settings
       The supervisord.conf file contains a section named [supervisord] in which global  settings
       related to the supervisord process should be inserted.  These are as follows.

   [supervisord] Section Values
       logfile
          The  path  to the activity log of the supervisord process.  This option can include the
          value %(here)s, which expands to the directory in which the  supervisord  configuration
          file was found.

          Default:  $CWD/supervisord.log

          Required:  No.

          Introduced: 3.0

       logfile_maxbytes
          The  maximum number of bytes that may be consumed by the activity log file before it is
          rotated (suffix multipliers like "KB", "MB", and "GB" can be used in the  value).   Set
          this value to 0 to indicate an unlimited log size.

          Default:  50MB

          Required:  No.

          Introduced: 3.0

       logfile_backups
          The number of backups to keep around resulting from activity log file rotation.  If set
          to 0, no backups will be kept.

          Default:  10

          Required:  No.

          Introduced: 3.0

       loglevel
          The logging level, dictating what is written to the supervisord activity log.   One  of
          critical,  error,  warn, info, debug, trace, or blather.  Note that at log level debug,
          the supervisord log file will record the stderr/stdout output of  its  child  processes
          and  extended  info  info  about process state changes, which is useful for debugging a
          process which isn't starting properly.  See also: activity_log_levels.

          Default:  info

          Required:  No.

          Introduced: 3.0

       pidfile
          The location in which supervisord keeps its pid file.   This  option  can  include  the
          value  %(here)s,  which expands to the directory in which the supervisord configuration
          file was found.

          Default:  $CWD/supervisord.pid

          Required:  No.

          Introduced: 3.0

       umask
          The umask of the supervisord process.

          Default:  022

          Required:  No.

          Introduced: 3.0

       nodaemon
          If true, supervisord will start in the foreground instead of daemonizing.

          Default:  false

          Required:  No.

          Introduced: 3.0

       minfds
          The minimum number of file descriptors that must be available before  supervisord  will
          start  successfully.  A call to setrlimit will be made to attempt to raise the soft and
          hard limits of the supervisord process to satisfy minfds.  The hard limit may  only  be
          raised if supervisord is run as root.  supervisord uses file descriptors liberally, and
          will enter a failure mode when one cannot be obtained from the OS, so it's useful to be
          able  to specify a minimum value to ensure it doesn't run out of them during execution.
          This option is particularly useful on Solaris, which has a low per-process fd limit  by
          default.

          Default:  1024

          Required:  No.

          Introduced: 3.0

       minprocs
          The  minimum  number  of  process descriptors that must be available before supervisord
          will start successfully.  A call to setrlimit will be made to attempt to raise the soft
          and  hard  limits  of  the supervisord process to satisfy minprocs.  The hard limit may
          only be raised if supervisord is run as root.  supervisord will enter  a  failure  mode
          when  the  OS  runs  out  of  process descriptors, so it's useful to ensure that enough
          process descriptors are available upon supervisord startup.

          Default:  200

          Required:  No.

          Introduced: 3.0

       nocleanup
          Prevent supervisord from clearing any existing AUTO child log files  at  startup  time.
          Useful for debugging.

          Default:  false

          Required:  No.

          Introduced: 3.0

       childlogdir
          The  directory  used  for  AUTO  child  log  files.   This option can include the value
          %(here)s, which expands to the directory in which the  supervisord  configuration  file
          was found.

          Default: value of Python's tempfile.get_tempdir()

          Required:  No.

          Introduced: 3.0

       user
          Instruct  supervisord  to  switch  users  to  this  UNIX  user account before doing any
          meaningful processing.  The user can only be switched if supervisord is started as  the
          root  user.  If supervisord can't switch users, it will still continue but will write a
          log message at the critical level saying that it can't drop privileges.

          Default: do not switch users

          Required:  No.

          Introduced: 3.0

       directory
          When supervisord daemonizes, switch to this directory.  This  option  can  include  the
          value  %(here)s,  which expands to the directory in which the supervisord configuration
          file was found.

          Default: do not cd

          Required:  No.

          Introduced: 3.0

       strip_ansi
          Strip all ANSI escape sequences from child log files.

          Default: false

          Required:  No.

          Introduced: 3.0

       environment
          A list of key/value pairs in the form KEY="val",KEY2="val2" that will be placed in  the
          supervisord  process'  environment  (and  as  a  result  in  all  of its child process'
          environments).  This option can include  the  value  %(here)s,  which  expands  to  the
          directory  in  which  the  supervisord configuration file was found.  Values containing
          non-alphanumeric  characters  should  be  quoted  (e.g.  KEY="val:123",KEY2="val,456").
          Otherwise,  quoting  the  values  is  optional  but  recommended.   To  escape  percent
          characters, simply use two. (e.g. URI="/first%%20name")  Note  that  subprocesses  will
          inherit the environment variables of the shell used to start supervisord except for the
          ones  overridden   here   and   within   the   program's   environment   option.    See
          subprocess_environment.

          Default: no values

          Required:  No.

          Introduced: 3.0

       identifier
          The identifier string for this supervisor process, used by the RPC interface.

          Default: supervisor

          Required:  No.

          Introduced: 3.0

   [supervisord] Section Example
          [supervisord]
          logfile = /tmp/supervisord.log
          logfile_maxbytes = 50MB
          logfile_backups=10
          loglevel = info
          pidfile = /tmp/supervisord.pid
          nodaemon = false
          minfds = 1024
          minprocs = 200
          umask = 022
          user = chrism
          identifier = supervisor
          directory = /tmp
          nocleanup = true
          childlogdir = /tmp
          strip_ansi = false
          environment = KEY1="value1",KEY2="value2"

   [supervisorctl] Section Settings
          The  configuration  file  may  contain settings for the supervisorctl interactive shell
          program.  These options are listed below.

   [supervisorctl] Section Values
       serverurl
          The  URL   that   should   be   used   to   access   the   supervisord   server,   e.g.
          http://localhost:9001.         For        UNIX        domain        sockets,        use
          unix:///absolute/path/to/file.sock.

          Default: http://localhost:9001

          Required:  No.

          Introduced: 3.0

       username
          The username to pass to the supervisord server for use in authentication.  This  should
          be  same  as  username  from  the supervisord server configuration for the port or UNIX
          domain socket you're attempting to access.

          Default: No username

          Required:  No.

          Introduced: 3.0

       password
          The password to pass to the supervisord server for use in authentication.  This  should
          be  the cleartext version of password from the supervisord server configuration for the
          port or UNIX domain socket you're attempting to access.  This value cannot be passed as
          a  SHA  hash.   Unlike  other  passwords specified in this file, it must be provided in
          cleartext.

          Default: No password

          Required:  No.

          Introduced: 3.0

       prompt
          String used as supervisorctl prompt.

          Default: supervisor

          Required:  No.

          Introduced: 3.0

       history_file
          A path to use as the readline persistent history file.  If you enable this  feature  by
          choosing  a path, your supervisorctl commands will be kept in the file, and you can use
          readline (e.g. arrow-up) to invoke commands you performed in  your  last  supervisorctl
          session.

          Default: No file

          Required:  No.

          Introduced: 3.0a5

   [supervisorctl] Section Example
          [supervisorctl]
          serverurl = unix:///tmp/supervisor.sock
          username = chris
          password = 123
          prompt = mysupervisor

   [program:x] Section Settings
       The  configuration file must contain one or more program sections in order for supervisord
       to know which programs it should start and control.  The header value is composite  value.
       It  is  the word "program", followed directly by a colon, then the program name.  A header
       value of [program:foo] describes a program with the name  of  "foo".   The  name  is  used
       within client applications that control the processes that are created as a result of this
       configuration.  It is an error to create a program section that does not have a name.  The
       name  must not include a colon character or a bracket character.  The value of the name is
       used as the value for the %(program_name)s string expression expansion within other values
       where specified.

       NOTE:
          A  [program:x]  section actually represents a "homogeneous process group" to supervisor
          (as of 3.0).  The members of the group are defined by the combination of  the  numprocs
          and  process_name  parameters  in  the  configuration.   By  default,  if  numprocs and
          process_name  are  left  unchanged  from  their  defaults,  the  group  represented  by
          [program:x]  will  be  named  x  and  will  have  a single process named x in it.  This
          provides a modicum of backwards compatibility with older supervisor releases, which did
          not treat program sections as homogeneous process group definitions.

          But  for  instance,  if  you  have  a  [program:foo] section with a numprocs of 3 and a
          process_name expression of %(program_name)s_%(process_num)02d,  the  "foo"  group  will
          contain  three  processes, named foo_00, foo_01, and foo_02.  This makes it possible to
          start a number of very similar processes  using  a  single  [program:x]  section.   All
          logfile  names,  all  environment strings, and the command of programs can also contain
          similar Python string expressions,  to  pass  slightly  different  parameters  to  each
          process.

   [program:x] Section Values
       command
          The  command  that will be run when this program is started.  The command can be either
          absolute  (e.g.  /path/to/programname)  or  relative  (e.g.  programname).   If  it  is
          relative,  the  supervisord's  environment  $PATH  will be searched for the executable.
          Programs can accept arguments, e.g. /path/to/program foo bar.  The command line can use
          double  quotes  to  group  arguments  with  spaces in them to pass to the program, e.g.
          /path/to/program/name -p "foo bar".  Note that the value of command may include  Python
          string  expressions,  e.g. /path/to/programname --port=80%(process_num)02d might expand
          to /path/to/programname --port=8000  at  runtime.   String  expressions  are  evaluated
          against  a  dictionary  containing  the  keys  group_name, host_node_name, process_num,
          program_name,  here  (the  directory  of  the  supervisord  config   file),   and   all
          supervisord's  environment  variables  prefixed  with ENV_.  Controlled programs should
          themselves not be daemons, as supervisord assumes it is responsible for daemonizing its
          subprocesses (see nondaemonizing_of_subprocesses).

          Default: No default.

          Required:  Yes.

          Introduced: 3.0

       process_name
          A Python string expression that is used to compose the supervisor process name for this
          process.  You usually don't  need  to  worry  about  setting  this  unless  you  change
          numprocs.   The  string  expression  is  evaluated  against  a dictionary that includes
          group_name, host_node_name, process_num, program_name, and here (the directory  of  the
          supervisord config file).

          Default: %(program_name)s

          Required:  No.

          Introduced: 3.0

       numprocs
          Supervisor  will  start  as  many instances of this program as named by numprocs.  Note
          that if numprocs > 1, the process_name expression must include %(process_num)s (or  any
          other valid Python string expression that includes process_num) within it.

          Default: 1

          Required:  No.

          Introduced: 3.0

       numprocs_start
          An integer offset that is used to compute the number at which numprocs starts.

          Default: 0

          Required:  No.

          Introduced: 3.0

       priority
          The  relative  priority  of  the  program  in  the  start and shutdown ordering.  Lower
          priorities indicate programs that start first and shut down last at  startup  and  when
          aggregate  commands  are used in various clients (e.g. "start all"/"stop all").  Higher
          priorities indicate programs that start last and shut down first.

          Default: 999

          Required:  No.

          Introduced: 3.0

       autostart
          If true, this program will start automatically when supervisord is started.

          Default: true

          Required:  No.

          Introduced: 3.0

       startsecs
          The total number of seconds which the program needs to stay running after a startup  to
          consider  the  start  successful  (moving  the  process  from the STARTING state to the
          RUNNING state).  Set to 0 to indicate that the program needn't  stay  running  for  any
          particular amount of time.

          NOTE:
              Even  if  a  process  exits with an "expected" exit code (see exitcodes), the start
              will still be considered a failure if the process exits quicker than startsecs.

          Default: 1

          Required:  No.

          Introduced: 3.0

       startretries
          The number of serial failure attempts that supervisord will allow  when  attempting  to
          start  the  program  before giving up and putting the process into an FATAL state.  See
          process_states for explanation of the FATAL state.

          Default: 3

          Required:  No.

          Introduced: 3.0

       autorestart
          Specifies if supervisord should automatically restart a process if it exits when it  is
          in the RUNNING state.  May be one of false, unexpected, or true.  If false, the process
          will not be autorestarted.  If unexpected, the  process  will  be  restarted  when  the
          program  exits with an exit code that is not one of the exit codes associated with this
          process' configuration (see exitcodes).  If true, the process will  be  unconditionally
          restarted when it exits, without regard to its exit code.

          NOTE:
              autorestart  controls  whether  supervisord  will autorestart a program if it exits
              after it has successfully started up (the process is in the RUNNING state).

              supervisord has a different restart mechanism for when the process is  starting  up
              (the  process  is  in  the  STARTING  state).   Retries  during process startup are
              controlled by startsecs and startretries.

          Default: unexpected

          Required:  No.

          Introduced: 3.0

       exitcodes
          The list of "expected" exit codes for this  program  used  with  autorestart.   If  the
          autorestart parameter is set to unexpected, and the process exits in any other way than
          as a result of a supervisor stop request, supervisord will restart the  process  if  it
          exits with an exit code that is not defined in this list.

          Default: 0,2

          Required:  No.

          Introduced: 3.0

       stopsignal
          The signal used to kill the program when a stop is requested.  This can be any of TERM,
          HUP, INT, QUIT, KILL, USR1, or USR2.

          Default: TERM

          Required:  No.

          Introduced: 3.0

       stopwaitsecs
          The number of seconds to wait for the OS to return a SIGCHILD to supervisord after  the
          program  has  been  sent  a  stopsignal.   If  this  number  of  seconds elapses before
          supervisord receives a SIGCHILD from the process, supervisord will attempt to  kill  it
          with a final SIGKILL.

          Default: 10

          Required:  No.

          Introduced: 3.0

       stopasgroup
          If  true, the flag causes supervisor to send the stop signal to the whole process group
          and implies killasgroup is true.  This is useful for programs, such as Flask  in  debug
          mode, that do not propagate stop signals to their children, leaving them orphaned.

          Default: false

          Required:  No.

          Introduced: 3.0b1

       killasgroup
          If  true,  when resorting to send SIGKILL to the program to terminate it send it to its
          whole process group instead, taking care of its  children  as  well,  useful  e.g  with
          Python programs using multiprocessing.

          Default: false

          Required:  No.

          Introduced: 3.0a11

       user
          Instruct  supervisord  to  use  this  UNIX  user  account as the account which runs the
          program.  The user can only be switched if supervisord is run as  the  root  user.   If
          supervisord can't switch to the specified user, the program will not be started.

          NOTE:
              The  user will be changed using setuid only.  This does not start a login shell and
              does   not   change   environment   variables   like    USER    or    HOME.     See
              subprocess_environment for details.

          Default: Do not switch users

          Required:  No.

          Introduced: 3.0

       redirect_stderr
          If  true, cause the process' stderr output to be sent back to supervisord on its stdout
          file descriptor (in UNIX shell terms, this is the equivalent of executing  /the/program
          2>&1).

          NOTE:
              Do  not  set  redirect_stderr=true in an [eventlistener:x] section.  Eventlisteners
              use stdout and stdin to communicate with supervisord.   If  stderr  is  redirected,
              output from stderr will interfere with the eventlistener protocol.

          Default: false

          Required:  No.

          Introduced: 3.0, replaces 2.0's log_stdout and log_stderr

       stdout_logfile
          Put  process  stdout  output  in  this file (and if redirect_stderr is true, also place
          stderr output in this file).  If stdout_logfile is unset or  set  to  AUTO,  supervisor
          will  automatically  choose  a file location.  If this is set to NONE, supervisord will
          create no log file.  AUTO log files and their backups will be deleted when  supervisord
          restarts.   The  stdout_logfile  value  can contain Python string expressions that will
          evaluated against a dictionary  that  contains  the  keys  group_name,  host_node_name,
          process_num, program_name, and here (the directory of the supervisord config file).

          NOTE:
              It  is  not  possible for two processes to share a single log file (stdout_logfile)
              when rotation (stdout_logfile_maxbytes) is enabled.  This will result in  the  file
              being corrupted.

          Default: AUTO

          Required:  No.

          Introduced: 3.0, replaces 2.0's logfile

       stdout_logfile_maxbytes
          The maximum number of bytes that may be consumed by stdout_logfile before it is rotated
          (suffix multipliers like "KB", "MB", and "GB" can be used  in  the  value).   Set  this
          value to 0 to indicate an unlimited log size.

          Default: 50MB

          Required:  No.

          Introduced: 3.0, replaces 2.0's logfile_maxbytes

       stdout_logfile_backups
          The  number  of stdout_logfile backups to keep around resulting from process stdout log
          file rotation.  If set to 0, no backups will be kept.

          Default: 10

          Required:  No.

          Introduced: 3.0, replaces 2.0's logfile_backups

       stdout_capture_maxbytes
          Max number of bytes written to capture FIFO when process is in  "stdout  capture  mode"
          (see  capture_mode).  Should be an integer (suffix multipliers like "KB", "MB" and "GB"
          can used in the value).  If this value is 0, process capture mode will be off.

          Default: 0

          Required:  No.

          Introduced: 3.0, replaces 2.0's logfile_backups

       stdout_events_enabled
          If true, PROCESS_LOG_STDOUT events will be emitted  when  the  process  writes  to  its
          stdout  file descriptor.  The events will only be emitted if the file descriptor is not
          in capture mode at the time the data is received (see capture_mode).

          Default: 0

          Required:  No.

          Introduced: 3.0a7

       stderr_logfile
          Put process stderr output in this file unless redirect_stderr  is  true.   Accepts  the
          same value types as stdout_logfile and may contain the same Python string expressions.

          NOTE:
              It  is  not  possible for two processes to share a single log file (stderr_logfile)
              when rotation (stderr_logfile_maxbytes) is enabled.  This will result in  the  file
              being corrupted.

          Default: AUTO

          Required:  No.

          Introduced: 3.0

       stderr_logfile_maxbytes
          The  maximum  number  of bytes before logfile rotation for stderr_logfile.  Accepts the
          same value types as stdout_logfile_maxbytes.

          Default: 50MB

          Required:  No.

          Introduced: 3.0

       stderr_logfile_backups
          The number of backups to keep around resulting from process stderr log  file  rotation.
          If set to 0, no backups will be kept.

          Default: 10

          Required:  No.

          Introduced: 3.0

       stderr_capture_maxbytes
          Max  number  of  bytes written to capture FIFO when process is in "stderr capture mode"
          (see capture_mode).  Should be an integer (suffix multipliers like "KB", "MB" and  "GB"
          can used in the value).  If this value is 0, process capture mode will be off.

          Default: 0

          Required:  No.

          Introduced: 3.0

       stderr_events_enabled
          If  true,  PROCESS_LOG_STDERR  events  will  be  emitted when the process writes to its
          stderr file descriptor.  The events will only be emitted if the file descriptor is  not
          in capture mode at the time the data is received (see capture_mode).

          Default: false

          Required:  No.

          Introduced: 3.0a7

       environment
          A  list of key/value pairs in the form KEY="val",KEY2="val2" that will be placed in the
          child  process'  environment.   The  environment  string  may  contain  Python   string
          expressions  that  will  be  evaluated  against  a  dictionary  containing  group_name,
          host_node_name, process_num, program_name, and here (the directory of  the  supervisord
          config  file).   Values  containing  non-alphanumeric characters should be quoted (e.g.
          KEY="val:123",KEY2="val,456").   Otherwise,  quoting  the  values   is   optional   but
          recommended.   Note  that  the subprocess will inherit the environment variables of the
          shell  used  to  start  "supervisord"  except  for  the  ones  overridden  here.    See
          subprocess_environment.

          Default: No extra environment

          Required:  No.

          Introduced: 3.0

       directory
          A  file  path  representing  a  directory to which supervisord should temporarily chdir
          before exec'ing the child.

          Default: No chdir (inherit supervisor's)

          Required:  No.

          Introduced: 3.0

       umask
          An octal number (e.g. 002, 022) representing the umask of the process.

          Default: No special umask (inherit supervisor's)

          Required:  No.

          Introduced: 3.0

       serverurl
          The URL passed in the environment to the subprocess  process  as  SUPERVISOR_SERVER_URL
          (see  supervisor.childutils)  to  allow  the  subprocess to easily communicate with the
          internal HTTP server.  If provided, it should have the same syntax and structure as the
          [supervisorctl]  section option of the same name.  If this is set to AUTO, or is unset,
          supervisor will automatically construct a server URL, giving  preference  to  a  server
          that listens on UNIX domain sockets over one that listens on an internet socket.

          Default: AUTO

          Required:  No.

          Introduced: 3.0

   [program:x] Section Example
          [program:cat]
          command=/bin/cat
          process_name=%(program_name)s
          numprocs=1
          directory=/tmp
          umask=022
          priority=999
          autostart=true
          autorestart=unexpected
          startsecs=10
          startretries=3
          exitcodes=0,2
          stopsignal=TERM
          stopwaitsecs=10
          stopasgroup=false
          killasgroup=false
          user=chrism
          redirect_stderr=false
          stdout_logfile=/a/path
          stdout_logfile_maxbytes=1MB
          stdout_logfile_backups=10
          stdout_capture_maxbytes=1MB
          stdout_events_enabled=false
          stderr_logfile=/a/path
          stderr_logfile_maxbytes=1MB
          stderr_logfile_backups=10
          stderr_capture_maxbytes=1MB
          stderr_events_enabled=false
          environment=A="1",B="2"
          serverurl=AUTO

   [include] Section Settings
       The  supervisord.conf  file  may  contain a section named [include].  If the configuration
       file contains an [include] section, it must contain  a  single  key  named  "files".   The
       values  in  this  key  specify  other  configuration  files  to  be  included  within  the
       configuration.

   [include] Section Values
       files
          A space-separated sequence of file globs.  Each file glob may be absolute or  relative.
          If  the  file  glob  is  relative,  it  is  considered  relative to the location of the
          configuration file which includes it.  A "glob" is  a  file  pattern  which  matches  a
          specified  pattern according to the rules used by the Unix shell. No tilde expansion is
          done, but *, ?, and character ranges expressed  with  []  will  be  correctly  matched.
          Recursive includes from included files are not supported.

          Default: No default (required)

          Required:  Yes.

          Introduced: 3.0

   [include] Section Example
          [include]
          files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf

   [group:x] Section Settings
       It  is often useful to group "homogeneous" process groups (aka "programs") together into a
       "heterogeneous" process group so they can  be  controlled  as  a  unit  from  Supervisor's
       various controller interfaces.

       To place programs into a group so you can treat them as a unit, define a [group:x] section
       in your configuration file.  The group header value  is  a  composite.   It  is  the  word
       "group", followed directly by a colon, then the group name.  A header value of [group:foo]
       describes a group with the name of "foo".  The name is  used  within  client  applications
       that  control  the processes that are created as a result of this configuration.  It is an
       error to create a group section that does not have a name.  The name must  not  include  a
       colon character or a bracket character.

       For  a  [group:x],  there  must  be  one  or  more  [program:x] sections elsewhere in your
       configuration file, and the group must refer to them by name in the programs value.

       If "homogeneous" process groups (represented  by  program  sections)  are  placed  into  a
       "heterogeneous"  group  via [group:x] section's programs line, the homogeneous groups that
       are implied by the program section will not exist at runtime in supervisor.  Instead,  all
       processes   belonging  to  each  of  the  homogeneous  groups  will  be  placed  into  the
       heterogeneous group.  For example, given the following group configuration:

          [group:foo]
          programs=bar,baz
          priority=999

       Given the above, at supervisord startup, the bar  and  baz  homogeneous  groups  will  not
       exist,  and  the  processes that would have been under them will now be moved into the foo
       group.

   [group:x] Section Values
       programs
          A comma-separated list of program names.  The programs which are listed become  members
          of the group.

          Default: No default (required)

          Required:  Yes.

          Introduced: 3.0

       priority
          A priority number analogous to a [program:x] priority value assigned to the group.

          Default: 999

          Required:  No.

          Introduced: 3.0

   [group:x] Section Example
          [group:foo]
          programs=bar,baz
          priority=999

   [fcgi-program:x] Section Settings
       Supervisor  can  manage  groups  of  FastCGI processes that all listen on the same socket.
       Until  now,  deployment  flexibility  for  FastCGI  was  limited.   To  get  full  process
       management,  you  could use mod_fastcgi under Apache but then you were stuck with Apache's
       inefficient concurrency model of one process or thread per  connection.   In  addition  to
       requiring  more  CPU  and memory resources, the process/thread per connection model can be
       quickly saturated by a slow resource, preventing other resources from  being  served.   In
       order  to take advantage of newer event-driven web servers such as lighttpd or nginx which
       don't include a built-in process  manager,  you  had  to  use  scripts  like  cgi-fcgi  or
       spawn-fcgi.   These  can be used in conjunction with a process manager such as supervisord
       or daemontools but require each FastCGI child process to bind  to  its  own  socket.   The
       disadvantages  of this are: unnecessarily complicated web server configuration, ungraceful
       restarts, and reduced fault tolerance.   With  fewer  sockets  to  configure,  web  server
       configurations  are much smaller if groups of FastCGI processes can share sockets.  Shared
       sockets allow for graceful restarts because the socket remains bound by the parent process
       while  any  of  the child processes are being restarted.  Finally, shared sockets are more
       fault tolerant because if a given process fails, other processes  can  continue  to  serve
       inbound connections.

       With  integrated  FastCGI  spawning support, Supervisor gives you the best of both worlds.
       You get full-featured process management with groups of FastCGI processes sharing  sockets
       without  being  tied  to  a  particular  web server.  It's a clean separation of concerns,
       allowing the web server and the process manager to each do what they do best.

       NOTE:
          The socket manager in Supervisor was originally developed to support FastCGI  processes
          but  it is not limited to FastCGI.  Other protocols may be used as well with no special
          configuration.  Any program that can access an open socket from a file descriptor (e.g.
          with   socket.fromfd   in   Python)  can  use  the  socket  manager.   Supervisor  will
          automatically create the socket, bind, and listen before forking the first child  in  a
          group.   The  socket  will  be passed to each child on file descriptor number 0 (zero).
          When the last child in the group exits, Supervisor will close the socket.

       All the options available to [program:x]  sections  are  also  respected  by  fcgi-program
       sections.

   [fcgi-program:x] Section Values
       [fcgi-program:x] sections have a single key which [program:x] sections do not have.

       socket
          The FastCGI socket for this program, either TCP or UNIX domain socket. For TCP sockets,
          use   this   format:   tcp://localhost:9002.    For   UNIX    domain    sockets,    use
          unix:///absolute/path/to/file.sock.    String   expressions  are  evaluated  against  a
          dictionary containing  the  keys  "program_name"  and  "here"  (the  directory  of  the
          supervisord config file).

          Default: No default.

          Required:  Yes.

          Introduced: 3.0

       socket_owner
          For  UNIX  domain sockets, this parameter can be used to specify the user and group for
          the FastCGI socket. May be a UNIX username (e.g. chrism) or a UNIX username  and  group
          separated by a colon (e.g. chrism:wheel).

          Default: Uses the user and group set for the fcgi-program

          Required:  No.

          Introduced: 3.0

       socket_mode
          For UNIX domain sockets, this parameter can be used to specify the permission mode.

          Default: 0700

          Required:  No.

          Introduced: 3.0

       Consult [program:x] Section Settings for other allowable keys, delta the above constraints
       and additions.

   [fcgi-program:x] Section Example
          [fcgi-program:fcgiprogramname]
          command=/usr/bin/example.fcgi
          socket=unix:///var/run/supervisor/%(program_name)s.sock
          socket_owner=chrism
          socket_mode=0700
          process_name=%(program_name)s_%(process_num)02d
          numprocs=5
          directory=/tmp
          umask=022
          priority=999
          autostart=true
          autorestart=unexpected
          startsecs=1
          startretries=3
          exitcodes=0,2
          stopsignal=QUIT
          stopasgroup=false
          killasgroup=false
          stopwaitsecs=10
          user=chrism
          redirect_stderr=true
          stdout_logfile=/a/path
          stdout_logfile_maxbytes=1MB
          stdout_logfile_backups=10
          stdout_events_enabled=false
          stderr_logfile=/a/path
          stderr_logfile_maxbytes=1MB
          stderr_logfile_backups=10
          stderr_events_enabled=false
          environment=A="1",B="2"
          serverurl=AUTO

   [eventlistener:x] Section Settings
       Supervisor allows specialized homogeneous process groups ("event listener  pools")  to  be
       defined  within  the  configuration file.  These pools contain processes that are meant to
       receive and respond to event notifications from supervisor's event system.  See events for
       an  explanation  of  how events work and how to implement programs that can be declared as
       event listeners.

       Note that all the options available to [program:x] sections are respected by eventlistener
       sections  except  for stdout_capture_maxbytes and stderr_capture_maxbytes (event listeners
       cannot emit process communication events, see capture_mode).

   [eventlistener:x] Section Values
       [eventlistener:x] sections have a few keys which [program:x] sections do not have.

       buffer_size
          The event listener pool's event queue buffer size.  When a listener pool's event buffer
          is overflowed (as can happen when an event listener pool cannot keep up with all of the
          events sent to it), the oldest event in the buffer is discarded.

       events
          A comma-separated list of event type  names  that  this  listener  is  "interested"  in
          receiving notifications for (see event_types for a list of valid event type names).

       result_handler
          A  pkg_resources  entry  point  string that resolves to a Python callable.  The default
          value  is  supervisor.dispatchers:default_handler.   Specifying  an  alternate   result
          handler  is  a very uncommon thing to need to do, and as a result, how to create one is
          not documented.

       Consult [program:x] Section Settings for other allowable keys, delta the above constraints
       and additions.

   [eventlistener:x] Section Example
          [eventlistener:theeventlistenername]
          command=/bin/eventlistener
          process_name=%(program_name)s_%(process_num)02d
          numprocs=5
          events=PROCESS_STATE
          buffer_size=10
          directory=/tmp
          umask=022
          priority=-1
          autostart=true
          autorestart=unexpected
          startsecs=1
          startretries=3
          exitcodes=0,2
          stopsignal=QUIT
          stopwaitsecs=10
          stopasgroup=false
          killasgroup=false
          user=chrism
          redirect_stderr=false
          stdout_logfile=/a/path
          stdout_logfile_maxbytes=1MB
          stdout_logfile_backups=10
          stdout_events_enabled=false
          stderr_logfile=/a/path
          stderr_logfile_maxbytes=1MB
          stderr_logfile_backups=10
          stderr_events_enabled=false
          environment=A="1",B="2"
          serverurl=AUTO

   [rpcinterface:x] Section Settings
       Adding  rpcinterface:x  settings  in  the configuration file is only useful for people who
       wish to extend supervisor with additional custom behavior.

       In the sample config file, there is a section which  is  named  [rpcinterface:supervisor].
       By default it looks like the following.

          [rpcinterface:supervisor]
          supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

       The  [rpcinterface:supervisor]  section  must remain in the configuration for the standard
       setup of supervisor to work properly.  If you don't want  supervisor  to  do  anything  it
       doesn't  already  do  out  of  the  box,  this  is all you need to know about this type of
       section.

       However, if you wish to add rpc interface namespaces in order to customize supervisor, you
       may  add  additional  [rpcinterface:foo] sections, where "foo" represents the namespace of
       the interface (from the web root), and the value named by  supervisor.rpcinterface_factory
       is  a  factory  callable  which  should  have  a  function signature that accepts a single
       positional argument supervisord and as many  keyword  arguments  as  required  to  perform
       configuration.  Any extra key/value pairs defined within the [rpcinterface:x] section will
       be passed as keyword arguments to the factory.

       Here's an example of a factory function, created in the __init__.py  file  of  the  Python
       package my.package.

          from my.package.rpcinterface import AnotherRPCInterface

          def make_another_rpcinterface(supervisord, **config):
              retries = int(config.get('retries', 0))
              another_rpc_interface = AnotherRPCInterface(supervisord, retries)
              return another_rpc_interface

       And a section in the config file meant to configure it.

          [rpcinterface:another]
          supervisor.rpcinterface_factory = my.package:make_another_rpcinterface
          retries = 1

   [rpcinterface:x] Section Values
       supervisor.rpcinterface_factory
          pkg_resources "entry point" dotted name to your RPC interface's factory function.

          Default: N/A

          Required:  No.

          Introduced: 3.0

   [rpcinterface:x] Section Example
          [rpcinterface:another]
          supervisor.rpcinterface_factory = my.package:make_another_rpcinterface
          retries = 1

   Glossary
       daemontools
              A process control system by D.J. Bernstein.

       launchd
              A process control system used by Apple as process 1 under Mac OS X.

       runit  A process control system.

       Superlance
              A  package  which  provides  various  event listener implementations that plug into
              Supervisor  which  can  help  monitor  process  memory  usage  and  crash   status:
              http://pypi.python.org/pypi/superlance.

       umask  Abbreviation of user mask: sets the file mode creation mask of the current process.
              See http://en.wikipedia.org/wiki/Umask.

AUTHOR

       This man page was created by Orestis Ioannou  <orestis@oioannou.com>  using  the  official
       documentation.

COPYRIGHT

       2004-2015, Agendaless Consulting and Contributors