LINUX.ORG.RU

gentoo - сервис не стартует по start, в состоянии crashed

 ,


0

1

Глупый, наверное, вопрос, особенно ввиду того, что использую Генту уже больше 10 лет, но всё же.

В Gentoo, при использовании openrc, у сервисов может быть больше состояний, чем просто started/stopped. Например, crashed. При этом, по команте /etc/init.d/example start он не стартанёт, ругнётся на то, что crashed нельзя стартануть, можно только zap'нуть.

Это создает определенную моральную дилемму - как прописывать идеологически правильно сервис в мониторинг, например, monit'ом? Там есть два параметра у сервисов - start command и stop command. При этом прописать в start-command сразу две команды через запятую («/etc/init.d/example zap; /etc/init.d/example start») не даёт ограничение синтаксиса конфигов monit. Создать свой шелл-скрипт для этой цели считаю костылём.

Как правильно делать-то? Может я просмторел в мануале какой-нить ключ к start/stop, по которому оно игнорирует/очищает состояние сервиса?

★★★★★

Как правильно делать-то?

Если ты не хочешь костыльных решений, самый правильный путь - сделать так, чтобы сервис никогда не был в состоянии crashed.

Black_Shadow ★★★★★ ()

Выдержка из /etc/rc.conf:

# rc will attempt to start crashed services by default.
# However, it will not stop them by default as that could bring down other
# critical services.
#rc_crashed_stop=NO
#rc_crashed_start=YES

Вывод - выставь эти параметры как тебе надо(например оба в yes) и пользуйся командой /etc/init.d/service restart в качестве start command. Так как в отличие от некоторых других систем инициализации OpenRC нормально реагирует на restart остановленного сервиса(он приравнивается к старту) - проблем быть не должно.

А, и не стоит забывать о рекомендации насчет зависимостей(помню как-то рестартнул dbus при запущенном KDE - веселья было жопой жуй :-)). В некоторых случаях поможет ключ --nodeps, но это палка о двух концах - сервисы которые теряют часть состояния(например зарегистрированные endoints в dbus) всё равно будут мягко говоря в «недоумении» после рестарта. Точнее не они, а те, кто зависит от их состояния(в моём случае с dbus офигели ConsoleKit и NetworkManager).

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Black_Shadow

Если ты не хочешь костыльных решений, самый правильный путь - сделать так, чтобы сервис никогда не был в состоянии crashed.

И где мне набрать непадающих сервисов? :)

AngryElf ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Да, эти параметры я и искал, видимо. Странно, дефолтные их настройки вроде как должны всё что нужно делать, но не делают. Поиграюсь.

А, и не стоит забывать о рекомендации насчет зависимостей(помню как-то рестартнул dbus при запущенном KDE - веселья было жопой жуй :-)

У меня без зависимостей сервисы падают. Но спасибо за напоминание.

AngryElf ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Добавлю то что это можно и per service настроить если в /etc/conf.d/service писать

qnikst ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.