running.rst 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. .. _running:
  2. Running Supervisor
  3. ==================
  4. This section makes reference to a :envvar:`BINDIR` when explaining how
  5. to run the :command:`supervisord` and :command:`supervisorctl`
  6. commands. This is the "bindir" directory that your Python
  7. installation has been configured with. For example, for an
  8. installation of Python installed via ``./configure
  9. --prefix=/usr/local/py; make; make install``, :envvar:`BINDIR` would
  10. be :file:`/usr/local/py/bin`. Python interpreters on different
  11. platforms use a different :envvar:`BINDIR`. Look at the output of
  12. ``setup.py install`` if you can't figure out where yours is.
  13. Adding a Program
  14. ----------------
  15. Before :program:`supervisord` will do anything useful for you, you'll
  16. need to add at least one ``program`` section to its configuration.
  17. The ``program`` section will define a program that is run and managed
  18. when you invoke the :command:`supervisord` command. To add a program,
  19. you'll need to edit the :file:`supervisord.conf` file.
  20. One of the simplest possible programs to run is the UNIX
  21. :program:`cat` program. A ``program`` section that will run ``cat``
  22. when the :program:`supervisord` process starts up is shown below.
  23. .. code-block:: ini
  24. [program:foo]
  25. command=/bin/cat
  26. This stanza may be cut and pasted into the :file:`supervisord.conf`
  27. file. This is the simplest possible program configuration, because it
  28. only names a command. Program configuration sections have many other
  29. configuration options which aren't shown here. See
  30. :ref:`programx_section` for more information.
  31. Running :program:`supervisord`
  32. ------------------------------
  33. To start :program:`supervisord`, run :file:`$BINDIR/supervisord`. The
  34. resulting process will daemonize itself and detach from the terminal.
  35. It keeps an operations log at :file:`$CWD/supervisor.log` by default.
  36. You may start the :command:`supervisord` executable in the foreground
  37. by passing the ``-n`` flag on its command line. This is useful to
  38. debug startup problems.
  39. To change the set of programs controlled by :program:`supervisord`,
  40. edit the :file:`supervisord.conf` file and ``kill -HUP`` or otherwise
  41. restart the :program:`supervisord` process. This file has several
  42. example program definitions.
  43. The :command:`supervisord` command accepts a number of command-line
  44. options. Each of thsese command line options overrides any equivalent
  45. value in the configuration file.
  46. :command:`supervisord` Command-Line Options
  47. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  48. -c FILE, --configuration=FILE
  49. The path to a :program:`supervisord` configuration file.
  50. -n, --nodaemon
  51. Run :program:`supervisord` in the foreground.
  52. -h, --help
  53. Show :command:`supervisord` command help.
  54. -u USER, --user=USER
  55. UNIX username or numeric user id. If :program:`supervisord` is
  56. started as the root user, setuid to this user as soon as possible
  57. during startup.
  58. -m OCTAL, --umask=OCTAL
  59. Octal number (e.g. 022) representing the :term:`umask` that should
  60. be used by :program:`supervisord` after it starts.
  61. -d PATH, --directory=PATH
  62. When supervisord is run as a daemon, cd to this directory before
  63. daemonizing.
  64. -l FILE, --logfile=FILE
  65. Filename path to use as the supervisord activity log.
  66. -y BYTES, --logfile_maxbytes=BYTES
  67. Max size of the supervisord activity log file before a rotation
  68. occurs. The value is suffix-multiplied, e.g "1" is one byte, "1MB"
  69. is 1 megabyte, "1GB" is 1 gigabyte.
  70. -y NUM, --logfile_backups=NUM
  71. Number of backup copies of the supervisord activity log to keep
  72. around. Each logfile will be of size ``logfile_maxbytes``.
  73. -e LEVEL, --loglevel=LEVEL
  74. The logging level at which supervisor should write to the activity
  75. log. Valid levels are ``trace``, ``debug``, ``info``, ``warn``,
  76. ``error``, and ``critical``.
  77. -j FILE, --pidfile=FILE
  78. The filename to which supervisord should write its pid file.
  79. -i STRING, --identifier=STRING
  80. Arbitrary string identifier exposed by various client UIs for this
  81. instance of supervisor.
  82. -q PATH, --childlogdir=PATH
  83. A path to a directory (it must already exist) where supervisor will
  84. write its ``AUTO`` -mode child process logs.
  85. -k, --nocleanup
  86. Prevent :program:`supervisord` from performing cleanup (removal of
  87. old ``AUTO`` process log files) at startup.
  88. -a NUM, --minfds=NUM
  89. The minimum number of file descriptors that must be available to
  90. the supervisord process before it will start successfully.
  91. -t, --strip_ansi
  92. Strip ANSI escape sequences from all child log process.
  93. -v, --version
  94. Print the supervisord version number out to stdout and exit.
  95. --profile_options=LIST
  96. Comma-separated options list for profiling. Causes
  97. :program:`supervisord` to run under a profiler, and output results
  98. based on the options, which is a comma-separated list of the
  99. following: ``cumulative``, ``calls``, ``callers``.
  100. E.g. ``cumulative,callers``.
  101. --minprocs=NUM
  102. The minimum number of OS process slots that must be available to
  103. the supervisord process before it will start successfully.
  104. Running :program:`supervisorctl`
  105. --------------------------------
  106. To start :program:`supervisorctl`, run ``$BINDIR/supervisorctl``. A
  107. shell will be presented that will allow you to control the processes
  108. that are currently managed by :program:`supervisord`. Type "help" at
  109. the prompt to get information about the supported commands.
  110. The :command:supervisorctl` executable may be invoked with "one time"
  111. commands when invoked with arguments from a command line. An example:
  112. ``supervisorctl stop all``. If arguments are present on the
  113. command-line, it will prevent the interactive shell from being
  114. invoked. Instead, the command will be executed and
  115. ``supervisorctl`` will exit.
  116. If :command:`supervisorctl` is invoked in interactive mode against a
  117. :program:`supervisord` that requires authentication, you will be asked
  118. for authentication credentials.
  119. Signals
  120. -------
  121. The :program:`supervisord` program may be sent signals which cause it
  122. to perform certain actions while it's running.
  123. You can send any of these signals to the single :program:`supervisord`
  124. process id. This process id can be found in the file represented by
  125. the ``pidfile`` parameter in the ``[supervisord]`` section of the
  126. configuration file (by default it's :file:`$CWD/supervisord.pid`).
  127. Signal Handlers
  128. ~~~~~~~~~~~~~~~
  129. ``SIGTERM``
  130. :program:`supervisord` and all its subprocesses will shut down.
  131. This may take several seconds.
  132. ``SIGINT``
  133. :program:`supervisord` and all its subprocesses will shut down.
  134. This may take several seconds.
  135. ``SIGQUIT``
  136. :program:`supervisord` and all its subprocesses will shut down.
  137. This may take several seconds.
  138. ``SIGHUP``
  139. :program:`supervisord` will stop all processes, reload the
  140. configuration from the first config file it finds, and restart all
  141. processes.
  142. ``SIGUSR2``
  143. :program:`supervisord` will close and reopen the main activity log
  144. and all child log files.
  145. Runtime Security
  146. ----------------
  147. The developers have done their best to assure that use of a
  148. :program:`supervisord` process running as root cannot lead to
  149. unintended privilege escalation. But **caveat emptor**. Supervisor
  150. is not as paranoid as something like DJ Bernstein's
  151. :term:`daemontools`, inasmuch as :program:`supervisord` allows for
  152. arbitrary path specifications in its configuration file to which data
  153. may be written. Allowing arbitrary path selections can create
  154. vulnerabilities from symlink attacks. Be careful when specifying
  155. paths in your configuration. Ensure that the :program:`supervisord`
  156. configuration file cannot be read from or written to by unprivileged
  157. users and that all files installed by the supervisor package have
  158. "sane" file permission protection settings. Additionally, ensure that
  159. your ``PYTHONPATH`` is sane and that all Python standard
  160. library files have adequate file permission protections.