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

Попытка войти в систему с помощью runit возвращает только «невозможно открыть supervise / ok»

Установлены runit в Debian 7.4 в бродяге.

Мой сценарий запуска работает, но как только я создаю каталог service / брюки / log /, я получаю следующую ошибку: unable to open supervise/ok. Моя служба продолжает работать, но ничего не регистрируется.

Я пробовал две разные службы, и у обеих одна и та же проблема.

Я пробовал различные сценарии service / брюки / log / run (в основном с использованием svlogd), я пробовал менять разрешения для всего (a + rwx), каталог для хранения журналов существует и имеет те же разрешения.

Если я запускаю svlogd прямо из командной строки, он работает должным образом.

Журнал bash ниже показывает, что происходит, когда я переименовываю /etc/service/pants/_log к /etc/service/pants/log и обратно /etc/service/pants/_log.

root@vwb-debian-wheezy:/etc/service# sv s pants/
run: pants/: (pid 29260) 44931s
root@vwb-debian-wheezy:/etc/service# mv pants/{_,}log/
root@vwb-debian-wheezy:/etc/service# sv s pants/
run: pants/: (pid 29260) 44963swarning: pants/: unable to open supervise/ok: file does not exist
; run: log: (pid 29260) 44963s
root@vwb-debian-wheezy:/etc/service# cat pants/log/run
#!/bin/sh

exec svlogd -ttt /var/log/service/pants/

root@vwb-debian-wheezy:/etc/service# ll pants/
total 12
drwxrwxrwx 2 root root 4096 Jul  3 07:00 log
-rwxrwxrwx 1 root root  442 Jul  3 06:58 run
drwxrwxrwx 2 root root 4096 Jul  2 18:59 supervise
root@vwb-debian-wheezy:/etc/service# ll /var/log/service/
total 8
drwxrwxrwx 2 root root 4096 Jul  2 16:55 pants
root@vwb-debian-wheezy:/etc/service# mv pants/{,_}log/
root@vwb-debian-wheezy:/etc/service# sv s pants/
run: pants/: (pid 29260) 45105s

Создать run файлы в /etc/sv/pants/ не /etc/service/pants/.

Затем необходимо создать символическую ссылку в /etc/service к /etc/sv/pants для активации услуги.

ln -s /etc/sv/pants /etc/service/

При создании файлов прямо в /etc/service работает только для службы, похоже, это вызывает проблемы и при использовании журнала.

Службу можно отключить, удалив символическую ссылку в /etc/service/.

Для установки Debian есть два каталоги: /etc/service и /service. Чтобы ваш сервис эффективно контролировался, они должны быть более или менее зеркальными отображениями друг друга. В вашем примере для обслуживания pants, должна быть символическая ссылка /etc/service/pants и символическая ссылка /service/pants, каждый должен указывать на /etc/sv/pants. Вы можете "обмануть" и заставить /service символическая ссылка на /etc/service чтобы получить тот же эффект, но я еще не уверен в полном влиянии этого изменения.

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

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

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

sudo apt install runit-systemd

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

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