Назад | Перейти на главную страницу

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 не имеют значения.

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

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

# 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 12.04, символические ссылки runit services должны быть размещены в / etc / service, а не в / service в соответствии с Руководство по Arch на Runit

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

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

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

sudo apt install runit-systemd

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

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

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