Страница 1 из 1

Запуск самбы с недефолтным конфигом

Добавлено: 2012-08-14 12:34:21
rust9mka
Всем доброго времени суток. Возникла необходимость запуска самбы с двумя разными конфигами. Столкнулся с неприятной особенностью - при запуске самбы с недефолтным конфигом (который располагается не в /usr/local/etc) в названии файла pid'a дописывается название конфига. То есть если запускать самбу сос ледующим содержимым /etc/rc.conf:

Код: Выделить всё

nmbd_enable="YES"
smbd_enable="YES"
winbindd_enable="YES"
samba_config="/samba/smb.conf"
Получаем следующие файлы в директории /var/run/samba:

Код: Выделить всё

# ls /var/run/samba
total 12
-rw-r--r--  1 root  wheel     4B Aug 14 16:35 nmbd-smb.conf.pid
-rw-r--r--  1 root  wheel     4B Aug 14 16:35 smbd-smb.conf.pid
-rw-r--r--  1 root  wheel     4B Aug 14 16:35 winbindd-smb.conf.pid
При этом самба работает и шары открываются. Проблемы начинаются при попытке остановить или перезапустить демон:

Код: Выделить всё

# /usr/local/etc/rc.d/samba stop
winbindd not running? (check /var/run/samba/winbindd.pid).
smbd not running? (check /var/run/samba/smbd.pid).
nmbd not running? (check /var/run/samba/nmbd.pid).
Кто-нибудь может подсказать, как необходимо отредактировать скрипт /usr/local/etc/rc.d/samba, чтобы при запуске с другим конфигом smb.conf файлы pid создавались со стандратными именами?
Либо, может быть, есть возможность научить самбу останавливать и перезапускать свои демоны с переименованными pid файлами?

Re: Запуск самбы с недефолтным конфигом

Добавлено: 2012-08-14 13:26:54
SeGa
В стартовом скрипте Самбы на моей машине в функциях старта samba_cmd (она же и для останова) есть строка, отвечающая за получение файла пида:

Код: Выделить всё

pidfile="/var/run/samba/${name}${pid_extra}.pid"
Вероятнее всего ${pid_extra} и несёт ответственность за суффикс в имени, к сожалению, я не нашёл при беглом просмотре как получается эта переменная. Возможно при запуске она генерируется правильно, а при завершении она пуста.

Re: Запуск самбы с недефолтным конфигом

Добавлено: 2012-08-15 3:31:49
rust9mka
SeGa писал(а):В стартовом скрипте Самбы на моей машине в функциях старта samba_cmd (она же и для останова) есть строка, отвечающая за получение файла пида:

Код: Выделить всё

pidfile="/var/run/samba/${name}${pid_extra}.pid"
Вероятнее всего ${pid_extra} и несёт ответственность за суффикс в имени, к сожалению, я не нашёл при беглом просмотре как получается эта переменная. Возможно при запуске она генерируется правильно, а при завершении она пуста.
Да, я тоже на ${pid_extra} обращал внимание при изучении rc.d скрипта. Но так и не понял, откуда она берется. Подумал что наверное из /etc/rc.subr, на который ссылается /usr/local/etc/rc.d/samba, но и там мои поиски не увенчались успехом. Может просто не там смотрел или /etc/rc.subr тоже может куда ссылается?

Re: Запуск самбы с недефолтным конфигом

Добавлено: 2012-08-29 4:25:57
rust9mka
Ларчик открывался намного проще, чем казалось.
Если кому-то интересно будет - в rc.d скрипте самбы переменная $pid_extra и правда отвечает за понимание самбой того, что она запущена с недефолтным конфигом и во всех функциях используется. Проблема правда в том, что нигде данной переменной не присваевается никакого значения. То есть она всегда остается пустой. Поэтому и наблюдаются сообщения вида "... check pid ..." при запущенной самбе. Мне удалось решить проблему добавлением следующих строк в rc.d скрипт /usr/local/etc/rc.d/samba до определения функции "samba_checkconfig":

Код: Выделить всё

 p=`ps -waux | grep "путь к конфигу (e.g. /var/smb.conf)" | grep -v grep | tail -n1 | cut -f1 -d " "`
    if  [ $p != "" ]; then
        pid_extra="-$(basename "${samba_config}")"
    fi
После этого самба начала понимать pid'ы, создаваемые при запуске с недефолтным конфигом и, соответственно, правильно реагировать на команды status, stop и restart.

Re: Запуск самбы с недефолтным конфигом

Добавлено: 2012-08-29 11:07:00
tom.cat

Код: Выделить всё

nmbd_enable="YES"
smbd_enable="YES"
Заменяется на:

Код: Выделить всё

samba_enable="YES"