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

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
rust9mka
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-05-17 12:18:21

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

Непрочитанное сообщение rust9mka » 2012-08-14 12:34:21

Всем доброго времени суток. Возникла необходимость запуска самбы с двумя разными конфигами. Столкнулся с неприятной особенностью - при запуске самбы с недефолтным конфигом (который располагается не в /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 файлами?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

SeGa
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-01-27 19:38:40

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

Непрочитанное сообщение SeGa » 2012-08-14 13:26:54

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

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

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

rust9mka
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-05-17 12:18:21

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

Непрочитанное сообщение rust9mka » 2012-08-15 3:31:49

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 тоже может куда ссылается?

rust9mka
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-05-17 12:18:21

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

Непрочитанное сообщение rust9mka » 2012-08-29 4:25:57

Ларчик открывался намного проще, чем казалось.
Если кому-то интересно будет - в 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.

Аватара пользователя
tom.cat
старшина
Сообщения: 446
Зарегистрирован: 2007-11-24 20:23:49
Откуда: Мытищи
Контактная информация:

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

Непрочитанное сообщение tom.cat » 2012-08-29 11:07:00

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

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

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

samba_enable="YES"
When you see pigs fly it means Windows has become open source