runit: не удается заблокировать ошибку supervise в debian

#logging #debian #runit

#ведение журнала #debian #runit

Вопрос:

Я пытаюсь настроить runit и войти в систему на моей виртуальной машине debian wheezy. До сих пор мне удавалось запустить службу gunicorn, следуя этой настройке:

 sudo mkdir /etc/sv/gunicorn
sudo vi /etc/sv/gunicorn/run
sudo ln -s /etc/sv/gunicorn/run /etc/service
  

В моем файле log run есть:

 LOG_DIR=/home/$USER/logs/gunicorn/

exec svlogd -tt $LOG_DIR
  

Когда я запускаю sudo runsvdir /etc/ service /gunicorn

 runsv supervise: fatal: unable to lock supervise/lock: temporary failure
  

Понятия не имею, что я делаю не так, есть какие-нибудь указания?

Ответ №1:

В ls -la /etc/service/gunicorn/supervise я не видел, .lock но был lock файл. Удаление этого файла блокировки вызвало небольшой хаос.

Таким образом, я избавился от символической ссылки; отключил pid в ps aux | grep gunicorn и повторно подключил символическую ссылку. Может быть, это конечная цель, но она позволяет выполнить работу.

Ответ №2:

Вы уверены, что предыдущий процесс полностью завершался? Возможно, вам потребуется найти и удалить .блокировка или .pid-файл, который сообщает системе, что он используется другим процессом

Ответ №3:

Это может быть вызвано остановкой runit демона, когда его отдельные службы все еще запущены.

Вместо удаления и повторного создания symlinks для runit службы:

 sv stop myservice
rm /etc/sv/myservice/supervise/lock
sv start myservice # or start the runit service
  

В вашем конкретном случае ваш symlink был неправильным и должен быть:

 ln -s /etc/sv/gunicorn /etc/service/gunicorn
  

Вы должны использовать символическую ссылку на sv каталог, а не на run файл в /etc/service/myservice