Попытка войти с помощью runit только возвращает "невозможно открыть supervise/ok"
Установлены runit
в Debian 7.4 в бродяге.
Мой скрипт запуска работает, но как только я создаю каталог service/ants/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
3 ответа
Создать 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", тогда запустите пакет itit-systemd, выполнив следующую команду
sudo apt install runit-systemd
Для Ubuntu 18.04 все вышеперечисленные ответы у меня не сработали. Затем я нашел это решение из другого вопроса аскубунту
надеюсь, это поможет