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

RUNIT - создан первый служебный каталог, «sv start testrun» не работает

Я новичок в runit. Я установил его на хосте Ubuntu.

Что я сделал:

1) создал каталог testrun в /etc/sv

2) создал скрипт run в /etc/sv/testrun/run, содержание скрипта:

#! /bin/bash
exec /root/FP/annotate-output python /root/FP/test.py | logger -t svtest

3) Если я вызываю напрямую / etc / sv / testrun / run, он выполняется успешно

4) я бегу sv start testrun (или sv run testrun, sv restart testrun), все они имеют одно и то же сообщение об ошибке:

fail: sv: unable to change to service directory: file does not exist

Есть идеи, что я делаю не так? Я новичок в runit и основываю все свои действия на информации, найденной здесь: http://smarden.org/runit/

Ваша служба настроена неправильно. Причина, по которой это сработало, заключается в том, что вы вызвали его непосредственно из службы. определение а не из фактического сервиса контроль.

Когда запускается управление службами runit, он ожидает /service существующий каталог, хотя некоторые установки (например, Debian Jessie) в настоящее время имеют его в /etc/service по неизвестным причинам. Сообщение об ошибке исходит из этого отсутствующего каталога, в который он пытается перейти, поэтому unable to change service directory сообщение. Сделайте следующее как root:

mkdir -p /etc/service
cd /
ln -s /etc/service
cd /service
ln -s /etc/sv/testrun

Это будет:

  • создайте каталог службы, если он не существует
  • поместите символическую ссылку в корень, чтобы runvdir мог изменить на /service как его рабочий каталог
  • создает ссылку на ваш testrun сервис, если вы определили его в /etc/sv/testrun

runsvdir затем сможет изменить свой каталог на /service, найдите свою символическую ссылку для testrun, а затем запустите его. Вы можете проверить это, используя ps fax или pstree -A чтобы увидеть дерево процессов; должен быть runsv с прикрепленной к нему вашей командой. Примечание: иногда процессу runvdir может потребоваться секунда или две для ориентации головы, поэтому, если вы сразу посмотрите и не увидите его в дереве процессов, подождите 2-3 секунды и повторите попытку, и он должен отобразить вверх. Кажется, это происходит только при запуске.

Кажется, что sv контролирует службы, которые запускаются и контролируются runit (с помощью runsv). Поскольку runit на моей машине фактически не заменяет sysvinit, он не запускается и не контролирует /services/ который должен содержать символические ссылки на /etc/sv/ каталоги.

Бег runsv /etc/sv/testrun/ похоже, выполняет ожидаемое поведение runit.