monit не поддерживает сессию dbus

380
drahnr

Я пытаюсь использовать monit для мониторинга и автоматически выдает проблемы, такие как сбои, утечки памяти и частое вращение процессора.

Для одного приложения - то, которое использует DBus (функции обслуживания и вызова), просто не запустится.

Он использует GDBus, ошибки которого dbus-launchотсутствуют, что действительно так, поскольку целевая система довольно старая, и там эта команда еще не существует.

Но запуск двоичного файла из консоли работает - просто работает - я думаю, это из-за того, что DBUS_SESSION_BUS_ADDRESS установлен правильно - но разве это не тот случай, когда оболочка создается для monit?

Как я могу заставить оболочку, порожденную monit, знать о переменной оболочки (то есть DBUS_SESSION_BUS_ADDRESS)?

0

1 ответ на вопрос

0
drahnr

It seemed to be security feature - this git commit resolves the issue by not trashing the env array.

https://bitbucket.org/tildeslash/monit/issue/6/dbus-session-bus


A dirty workaround for those stuck to monit 5.4 or earlier (last tested):

A dirty hack to get a session bus from other processes env variables (only tested with a single user):

#! /bin/sh DBUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/*/environ 2> /dev/null| sed -e 's/\/proc\/[^\/]*\/environ\:/ /g'| cut -d ' ' -f 2` if [ "x$" != "x" ]; then export $ fi