monit kann die dbus-Sitzung nicht unterstützen

378
drahnr

Ich versuche, monit zur Überwachung von Problemen wie Abstürzen, Speicherlecks und CPU-Hotspinning zu verwenden.

Für eine Anwendung - eine, die DBus (Servieren und Aufrufen von Funktionen) verwendet - wird einfach nicht gestartet.

Es verwendet GDBus, dessen Fehler mit dbus-launchnicht verfügbar sind - was in der Tat zutrifft, da das Zielsystem ziemlich alt ist und dort dieser Befehl noch nicht existiert.

Das Ausführen der Binärdatei von der Konsole aus funktioniert jedoch - es funktioniert einfach - ich denke, das liegt daran, dass DBUS_SESSION_BUS_ADDRESS richtig gesetzt ist - aber das ist in der Shell nicht der Fall, die für monit erzeugt wird?

Wie kann ich die Shell durch einen Monitor hervorbringen, der auf eine Shell-Variable (z. B. DBUS_SESSION_BUS_ADDRESS) aufmerksam wird?

0

1 Antwort auf die Frage

0
drahnr

Es schien, Sicherheit zu sein Feature - das git commit das Problem behebt, indem nicht das env - Array Wegwerfen.

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


Ein schmutziger Workaround für diejenigen, die auf Monitor 5.4 oder früher (zuletzt getestet) hängen geblieben sind:

Ein schmutziger Hack, um einen Sitzungsbus von anderen Prozessvariablen zu erhalten (nur mit einem einzelnen Benutzer getestet):

#! /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