Process supervision

Process supervision is a form of operating system service management in which some master process remains the parent of the service processes.

Benefits

Benefits[1] compared to traditional process launchers and system boot mechanisms, like System V init, include:

  • Ability to restart services which have failed
  • The fact that it does not require the use of "pidfiles"
  • Clean process state
  • Reliable logging, because the master process can capture the stdout/stderr of the service process and route it to a log
  • Faster (concurrent) and ability to start up and stop

Implementations

  • daemontools
  • daemontools-encore: Derived from the public-domain release of daemontools
  • Eye: A Ruby implementation
  • Finit: Fast, Extensible Init for Linux Systems
  • God: A Ruby implementation
  • immortal: A Go implementation
  • PM2: A Process Manager for Node.js
  • Initng
  • launchd
  • minit: A small, yet feature-complete Linux init
  • Monit
  • runit
  • Supervisor: A Python implementation
  • s6: Low-level process and service supervision
  • Systemd

References

  1. ^ "Runit - benefits".
  • v
  • t
  • e
Service management in Unix-like systems
Portable implementations
  • init
  • Initng
  • OpenRC
  • runit
Operating-system-specific
  • Linux
    • systemd
    • Upstart
  • macOS
    • launchd
    • SystemStarter
  • Solaris
    • Service Management Facility
Process supervision tools