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

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

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

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

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

1 ответ1

0

Похоже, это была функция безопасности - этот git commit решает проблему, не уничтожая массив env.

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


Грязный обходной путь для тех, кто застрял на мониторинге 5.4 или более ранних версий (последний тест):

Грязный хак, чтобы получить сессионную шину от переменных env других процессов (тестируется только одним пользователем):

#! /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${DBUS_ADDRESS}" != "x" ]; then
        export ${DBUS_ADDRESS}
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .