Команды супервизора для запуска rsyslog и haproxy

Я пытался запустить эти два, когда мой образ докера запускается, но они никогда не запускаются.

[supervisord]
nodaemon=true

[program:rsyslog]
command=/bin/bash "service rsyslog start"

[program:haproxy]
command=/bin/bash "service haproxy start"

Какая команда нужна чтобы запустить оба в порядке: сначала rsyslog, а затем haproxy?

2
задан 25 November 2015 в 12:12
3 ответа

Это не сработает, потому что команда service ... start запускает программу как демон и отправляет ее в фоновом режиме. Супервизор не может с этим справиться, ему нужно запускать их как подпроцесс и запускать в режиме «на открытом воздухе». См. здесь :

Программы, предназначенные для запуска под супервизором , не должны демонстрировать самих себя. Вместо этого они должны работать на переднем плане . Им следует не отсоединяться от терминала, с которого они запущены. Самый простой способ узнать, будет ли программа работать на переднем плане, - это запустите команду, которая вызывает программу из приглашения оболочки. Если это возвращает вам контроль над терминалом, но продолжает работать, он демонизировать себя, и это почти наверняка будет неправильным способом запустить его под супервизором. Вы хотите запустить команду, которая по существу требует, чтобы вы нажали Ctrl-C, чтобы вернуть управление терминалом. Если он возвращает вам приглашение оболочки после ее запуска без необходимости нажмите Ctrl-C, это бесполезно в режиме супервизора. Во всех программах есть варианты, которые нужно запускать на переднем плане, но нет стандартного способа сделай это; вам нужно будет прочитать документацию для каждой программы.

Вот пример конфигурации программы в реальном мире из документации супервизора :

Apache 2.2.6:

[program:apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
redirect_stderr=true

Скрипты запуска вашей программы может быть хорошим местом, чтобы узнать, как запускается программа, для правильной настройки.

Некоторые примеры здесь

1
ответ дан 3 December 2019 в 14:36
[supervisord]
nodaemon=true

[program:rsyslog]
command=service rsyslog start

[program:haproxy]
command=service haproxy start

Однако теперь я должен отложить запуск haproxy, так как haproxy требует, чтобы rsyslog был запущен заранее. Однако это еще одна проблема.

-1
ответ дан 3 December 2019 в 14:36

Нужно поставить что-то подобное, только настроить параметры

[program:rsyslog]
command=/sbin/rsyslogd -n -a /var/run/systemd/journal/syslog
numprocs=1
autostart=true
autorestart=true

С уважением,

-1
ответ дан 14 June 2021 в 19:14

Теги

Похожие вопросы