running.rst 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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. --profile_options=LIST
  94. Comma-separated options list for profiling. Causes
  95. :program:`supervisord` to run under a profiler, and output results
  96. based on the options, which is a comma-separated list of the
  97. following: ``cumulative``, ``calls``, ``callers``.
  98. E.g. ``cumulative,callers``.
  99. --minprocs=NUM
  100. The minimum number of OS process slots that must be available to
  101. the supervisord process before it will start successfully.
  102. Running :program:`supervisorctl`
  103. --------------------------------
  104. To start :program:`supervisorctl`, run ``$BINDIR/supervisorctl``. A
  105. shell will be presented that will allow you to control the processes
  106. that are currently managed by :program:`supervisord`. Type "help" at
  107. the prompt to get information about the supported commands.
  108. The :command:supervisorctl` executable may be invoked with "one time"
  109. commands when invoked with arguments from a command line. An example:
  110. ``supervisorctl stop all``. If arguments are present on the
  111. command-line, it will prevent the interactive shell from being
  112. invoked. Instead, the command will be executed and
  113. ``supervisorctl`` will exit.
  114. If :command:`supervisorctl` is invoked in interactive mode against a
  115. :program:`supervisord` that requires authentication, you will be asked
  116. for authentication credentials.
  117. Signals
  118. -------
  119. The :program:`supervisord` program may be sent signals which cause it
  120. to perform certain actions while it's running.
  121. You can send any of these signals to the single :program:`supervisord`
  122. process id. This process id can be found in the file represented by
  123. the ``pidfile`` parameter in the ``[supervisord]`` section of the
  124. configuration file (by default it's :file:`$CWD/supervisord.pid`).
  125. Signal Handlers
  126. ~~~~~~~~~~~~~~~
  127. ``SIGTERM``
  128. :program:`supervisord` and all its subprocesses will shut down.
  129. This may take several seconds.
  130. ``SIGINT``
  131. :program:`supervisord` and all its subprocesses will shut down.
  132. This may take several seconds.
  133. ``SIGQUIT``
  134. :program:`supervisord` and all its subprocesses will shut down.
  135. This may take several seconds.
  136. ``SIGHUP``
  137. :program:`supervisord` will stop all processes, reload the
  138. configuration from the first config file it finds, and restart all
  139. processes.
  140. ``SIGUSR2``
  141. :program:`supervisord` will close and reopen the main activity log
  142. and all child log files.
  143. Runtime Security
  144. ----------------
  145. The developers have done their best to assure that use of a
  146. :program:`supervisord` process running as root cannot lead to
  147. unintended privilege escalation. But **caveat emptor**. Supervisor
  148. is not as paranoid as something like DJ Bernstein's
  149. :term:`daemontools`, inasmuch as :program:`supervisord` allows for
  150. arbitrary path specifications in its configuration file to which data
  151. may be written. Allowing arbitrary path selections can create
  152. vulnerabilities from symlink attacks. Be careful when specifying
  153. paths in your configuration. Ensure that the :program:`supervisord`
  154. configuration file cannot be read from or written to by unprivileged
  155. users and that all files installed by the supervisor package have
  156. "sane" file permission protection settings. Additionally, ensure that
  157. your ``PYTHONPATH`` is sane and that all Python standard
  158. library files have adequate file permission protections.