Я установил Supervisor (v3.1.2) для управления ElastAlert, но когда я запускаю supervisorctl
, он иногда выдает эту ошибку:
unix:///var/run/supervisor.sock no such file
и в других случаях возникает такая ошибка:
unix:///tmp/supervisor.sock no such file
Замечу, что это приводит меня к приглашению supervisor>
, но команды после этого являются теми же ошибками, что и выше. Файл /etc/supervisor/supervisor.conf
настроен на использование / var / run
, что не соответствует второй ошибке.
Я создал ссылку на /etc/supervisor.conf
, поскольку другие страницы справки предлагали это, но это не имело значения.
Две странные вещи, когда я впервые установил Supervisor. работал нормально, но именно после перезагрузки эта проблема началась. И еще одна странность в том, что ElastAlert запускается после перезагрузки и продолжает нормально работать. Итак, хотя у него могут быть ошибки, он выполняет свою работу. Это не препятствие для показа, но я бы хотел, чтобы это работало должным образом.
Есть идеи?
Это случается со мной, когда физическая машина перезагружается. Мои машины работают в режиме Ubuntu, в диапазоне от 12.04 до 16.04. Я решаю это путем перезапуска супервизора как службы.
sudo service supervisor stop
sudo service supervisor start
(Это как-то работает намного лучше, чем просто использование 'перезагрузки')
Очевидно, что это не идеальное решение, если вы зависите от супервизора, чтобы он запускал для вас другие программы без необходимости перезагрузки после каждой перезагрузки. В настоящее время я изучаю systemd
, как предлагали другие.
Правка: Если вы находитесь на Ubuntu 16.04, то этот ответ может исправить всю вашу проблему, как и мою. Вы должны 'включить' systemd, чтобы запустить супервизор. https://unix.stackexchange.com/a/291098
У меня возникла эта проблема при размещении моего приложения django. Моя машина - aws => ec2 => ubuntu 18.x
У меня была неправильная конфигурация моего bash-файла gunicorn. когда я исправил проблему с путём в файле gunicorn. supervisor снова начал работать.
убедитесь, что вы правильно настроили:
DJANGODIR=/home/ubuntu/<my-project> # Django project directory
SOCKFILE=/home/ubuntu/<my-project>/run/gunicorn.sock # we will communicte using this unix socket
Вот в моем случае. Скажем, ошибка unix:///var/run/supervisord.sock нет такого файла
при вводе этой команды sudo supervisorctl status
Итак, мое решение:
sudo nano /etc/supervisor/supervisord.conf
[supervisorctl]
serverurl=unix:///var/run/supervisord.sock ; use a unix:// URL for a unix socket
unix:///var/run/supervisor.sock
. См. разницу между супервизоромd и супервизоромрестарт супервизора сервиса
статус супервизора сервиса sudo
sudo supervisorctl status
, если да, попробуйте удалить конфигурацию в /etc/supervisor/conf.d/...
или переустановить супервизорИтак, у меня была та же проблема, и я использовал супервизор, используя пользователя без полномочий root. Суть в том, что вы должны убедиться, что служба супервизора работает. Для этого сначала найдите и запустите супервизора. Поскольку я использовал pyenv это команда, которую я запустил
$ ~/.pyenv/versions/3.8.9/bin/supervisord -c ~/etc/supervisor/supervisord.conf
Конфигурация supervisord.conf была создана мной и размещена там.
Теперь запуск supervisorctl работает отлично.
$ ~/.pyenv/versions/3.8.9/bin/supervisorctl -c ~/etc/supervisor/supervisord.conf