runit - невозможно открыть supervise/ok: файл не существует

Я пытаюсь выяснить, почему runit не загружается или не дает мне статус для управляемых приложений. Работает на Ubuntu 12.04.

Я создал /service, /etc/sv/myapp (со скриптом запуска, файлом конфигурации, папкой журнала и скриптом запуска внутри него). Я создаю символическую ссылку из / service / в / etc / sv / myapp

Когда я бегу

sudo sv s /service/*

Я получаю следующее сообщение об ошибке:

warning: /service/myapp: unable to open supervice/ok: file does not exist

Некоторые из моих поисковиков показали, что якобы перезагрузка службы svscan могла бы это исправить, но ее уничтожение и запуск svscanboot не имели значения.

Какие-либо предложения? Я где-то здесь пропускаю шаг?

5 ответов

Решение

Проблема заключалась в том, что, по крайней мере в Ubuntu 12.04, символические ссылки на сервисы runit должны быть помещены в /etc/service, а не / service в соответствии с руководством Arch по Runit

В моем случае я удалил блокировку и pid из конфигурации сервиса после остановки сервиса:

# stops the service 
sv down serviceName

# deletes the 'pid' and 'lock' files
find -L /etc/service/serviceName -type f \( -name "pid" -o -name "lock" \) -delete

# starts the service
sv up serviceName

# verify service status
sv s serviceName

Мне понадобилось время, чтобы найти решение, поэтому я надеюсь, что оно поможет кому-то еще.

Если вы используете Ubuntu 18.04 или выше и получаете следующую ошибку

невозможно открыть supervise/ok: файл не существует

или если runvdir не отображается в выводе "grep", тогда запустите пакет itit-systemd, выполнив следующую команду

sudo apt install runit-systemd

Для Ubuntu 18.04 все вышеперечисленные ответы у меня не сработали. Затем я нашел это решение из другого вопроса аскубунту

надеюсь, это поможет

sudo runsv /service/run/ &

затем

sudo sv  start /service/run/

или же

sudo sv  up /service/run/

Runit также испытывает проблемы с запуском, когда служба имеет символическую ссылку на каталог, смонтированный в другой файловой системе через LVM. Например,

$ readlink -f /etc/service/my-service
/opt/my-service

$ mount
...
/dev/mapper/lvm--local-opt on /opt type ext4 (...)

$ sv once my-service
warning: my-service: unable to open supervise/ok: file does not exist

Возможные решения:

  • Размонтируйте файловую систему из LVM
    umount /opt; lvremove /dev/mapper/lvm--local-opt
  • Переместите сервис runit в лучшее место
    update-service --remove /opt/my-service; mv /opt/my-service /etc/sv; update-service --add /etc/sv/my-service
Другие вопросы по тегам