Разница в том, что выскочка является заменой инициализации, а супервизор - Process Control System
. Это объяснение дается на supervisord сайте :
Он разделяет некоторые цели программ, таких как launchd, daemontools и runit. В отличие от некоторых из этих программ, он не предназначен для замены init как «идентификатор процесса 1». Вместо этого он предназначен для управления процессами, связанными с проектом или клиентом, и предназначен для запуска, как и любая другая программа во время загрузки.
Это означает, что сам супервизор будет запущен при помощи upstart, либо через файл задания upstart, либо через скрипт инициализации sysV. Лично я решил использовать диспетчер процессов, а не обычный init, исходя из следующих причин:
- Служба не работает должным образом
- Служба, как известно, умирает и нуждается в мониторинге и перезапуске
Пример программы, которая не работает должным образом, - это когда она не закрывает stdout и stderr и продолжает записывать данные в эти места. Supervisord может обрабатывать регистрацию этого вывода.