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