LINUX.ORG.RU

Как правильно запускать ejabberdctl?

 ,


0

2

ejabberdctl - утилита для управления XMPP-сервером ejabberd. Шелл-скрипт, который дергает другой скрипт, который дергает что-то там через erlang и дает команды ноде ejabberd'а или получает с него данные. Но не суть.

Есть плагин для Munin, который рисует графики по потреблению памяти ejabberd'ом, подключенным юзерам и тому подобному. То, что касается юзеров и прочих подключений - добывается через ejabberdctl.

При прямом вызове ejabberdctl в терминале (как под рутом, так и под юзером ejabberd) все ок, получаю нужные циферки без лишнего шума. Если то же самое делается через Munin - в случае с user = ejabberd получаю ругань на нехватку каких-то прав и краш-дамп в домашнем каталоге ejabberd, в случае с user = root все выполняется и я таки получаю статистику, но в логи (/var/log/daemon.log) при этом вываливается куча сообщений про запуск дополнительных сессий - http://linuxoid.in/isida-paste/26b7a60fb.html

Собственно, то же поведение, если запихнуть ejabberdctl в cron - куча сообщений в логах только ради того, чтобы получить в итоге одну циферку.

Что оно хочет? Реагирует на наличие / отсутствие терминала? Перепробовал уже разные варианты с script/setsid/socat, найденные в интернете - не помогло (или не нашел нужный вариант). В общем, как заставить его не призывать всех демонов ада ради получения одной циферки и перестать гадить в логи?

★★★★★

Ответ на: комментарий от Pinkbyte

Хотя насчет краш-дампа поторопился, возможно - не могу повторить сейчас. Правда, и версия сервера уже сменилась со времени первых попыток.

А ошибка прилетает такая - http://linuxoid.in/isida-paste/26b7b1d76.html

При этом я вполне успешно делаю:

su -l ejabberd
$ /usr/sbin/ejabberdctl outgoing_s2s_number
20
YAR ★★★★★
() автор топика
Ответ на: комментарий от YAR

В первой же строке в сообщении об ошибке написано «No home for cookie file». Вероятно munin только переключает пользователя, но не обеспечивает ему пользовательское окружение, в частности не устанавливает $HOME. Твой su -l запускает login shell, который устанавливает $HOME.

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

Гм. Ок, новые вводные: с env.HOME /var/lib/ejabberd оно мало того, что работает (да, надо было сделать это раньше), так еще и в логах не ругается. Похоже, осталось отловить разницу в env между munin и cron.

YAR ★★★★★
() автор топика