bind9 не перезапускается (UbuntuServer)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

bind9 не перезапускается

Сообщение TonnyBennet »

Здравствуйте.

Есть UbuntuServer 11.10, на котором помимо всего прочего крутится bind9. Слушает запросы как из внешнего мира так и из локальной сети. Периодически приходится править зоны. Поправил - даю серверу команду на перезапуск:

Код:

~$ sudo /etc/init.d/bind9 restart * Stopping domain name service... bind9 [ OK ]


И на этом задание повисает. Т.е. сервер останавливается но почему-то не стартует сам. Приходится либо запускать его, либо снова давать команду на перезапуск. Причём это происходит только если перезапустить сервер, который давно работает (более суток как я полагаю). Если служба работает недавно, то перезапуск проходит нормально.

Код:

~$ sudo /etc/init.d/bind9 restart * Stopping domain name service... bind9 [ OK ] * Starting domain name service... bind9 [ OK ]


В логах самого бинда ничего не нашёл... Подскажите пожалуйста куда копать и из-за чего может возникать такая проблема.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: bind9 не перезапускается

Сообщение Hephaestus »

TonnyBennet писал(а):
03.02.2014 13:56
В логах самого бинда ничего не нашёл... Подскажите пожалуйста куда копать и из-за чего может возникать такая проблема.
Было у меня нечто подобное с другими сервисами.
Когда руками делаешь stop, а потом start, между этими командами получается задержка, которой нет в случае restart.
Насколько я понял, дело именно в этом.

Ибо

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

/etc/init.d/servicename stop && /etc/init.d/servicename start
давало то же что и

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

/etc/init.d/servicename restart
то есть успешный перезапуск происходил не всегда.

А вот при

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

/etc/init.d/servicename stop;
sleep 2;
/etc/init.d/servicename start
этой проблемы не было.
В данном коде величину задержки я написал наобум, просто как пример.
Это может быть одна-две секунды, а может быть и пять.

Почему сервису нужна задержка для успешного рестарта - я не вникал, ибо дело было на десктопе, просто перезапускал руками.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21510
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: bind9 не перезапускается

Сообщение Bizdelnick »

Это, конечно, не решение проблемы, но почему Вы используете restart, а не reload?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: bind9 не перезапускается

Сообщение TonnyBennet »

По уже забытым мною причинам, то ли не всегда грузились зоны, то ли ещё что-то происходило не так если использовал:
rndc reload или bind9 reload

Начал использовать restart.


А вопрос я этот поднял потому, что недавно я перезагрузил сервак и он не поднялся. Пришёл к нему, а на экране стадия остановки бинда. Начал ковыряться и наткнулся на то, что он криво останавливается.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: bind9 не перезапускается

Сообщение Hephaestus »

TonnyBennet писал(а):
03.02.2014 15:31
А вопрос я этот поднял потому, что недавно я перезагрузил сервак и он не поднялся. Пришёл к нему, а на экране стадия остановки бинда. Начал ковыряться и наткнулся на то, что он криво останавливается.
А-а-а... Ну так это совсем другое дело.
Я думал Вы перезапускаете только сервис, а Вы всю машину в ребут отправили.
Тогда то, что я писал насчёт задержек - не в тему.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: bind9 не перезапускается

Сообщение TonnyBennet »

Просто при остановке, как мне кажется, система что-то неправильно останавливает или ждёт какого-то ответа.
Спасибо сказали:
Аватара пользователя
McSim
Сообщения: 419
Статус: Экспериментатор
ОС: заGNU/Linux Debian

Re: bind9 не перезапускается

Сообщение McSim »

Что за версия bind в UbuntuServer 11.10?
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: bind9 не перезапускается

Сообщение TonnyBennet »

McSim писал(а):
05.02.2014 09:04
Что за версия bind в UbuntuServer 11.10?


~$ named -v
BIND 9.7.3
Спасибо сказали:
Аватара пользователя
McSim
Сообщения: 419
Статус: Экспериментатор
ОС: заGNU/Linux Debian

Re: bind9 не перезапускается

Сообщение McSim »

Попробуй выполнить пошагово то, что написано в скрипте (/etc/init.d/bind9) для переменной stop:

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

    stop)
    log_daemon_msg "Stopping domain name service..." "bind9"
    if ! check_network; then
        log_action_msg "no networks configured"
        log_end_msg 1
    fi

    if [ "X$RESOLVCONF" != "Xno" ] && [ -x /sbin/resolvconf ] ; then
        /sbin/resolvconf -d lo.named
    fi
    pid=$(/usr/sbin/rndc stop -p | awk '/^pid:/ {print $2}') || true
    if [ -z "$pid" ]; then        # no pid found, so either not running, or error
        pid=$(pgrep -f ^/usr/sbin/named) || true
        start-stop-daemon --stop --oknodo --quiet --exec /usr/sbin/named \
            --pidfile ${PIDFILE} -- $OPTIONS
    fi
    if [ -n $pid ]; then
      while kill -0 $pid 2>/dev/null; do
        log_progress_msg "waiting for pid $pid to die"
        sleep 1
      done
    fi
    log_end_msg 0
    ;;

я думаю, когда дойдешь до log_end_msg 0, то поймешь, где затыкается )

Если что-то в скрипте не понятно, то пиши вопросы )
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: bind9 не перезапускается

Сообщение TonnyBennet »

McSim писал(а):
05.02.2014 09:24
Попробуй выполнить пошагово то, что написано в скрипте (/etc/init.d/bind9) для переменной stop:

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

    stop)
    log_daemon_msg "Stopping domain name service..." "bind9"
    if ! check_network; then
        log_action_msg "no networks configured"
        log_end_msg 1
    fi

    if [ "X$RESOLVCONF" != "Xno" ] && [ -x /sbin/resolvconf ] ; then
        /sbin/resolvconf -d lo.named
    fi
    pid=$(/usr/sbin/rndc stop -p | awk '/^pid:/ {print $2}') || true
    if [ -z "$pid" ]; then        # no pid found, so either not running, or error
        pid=$(pgrep -f ^/usr/sbin/named) || true
        start-stop-daemon --stop --oknodo --quiet --exec /usr/sbin/named \
            --pidfile ${PIDFILE} -- $OPTIONS
    fi
    if [ -n $pid ]; then
      while kill -0 $pid 2>/dev/null; do
        log_progress_msg "waiting for pid $pid to die"
        sleep 1
      done
    fi
    log_end_msg 0
    ;;

я думаю, когда дойдешь до log_end_msg 0, то поймешь, где затыкается )

Если что-то в скрипте не понятно, то пиши вопросы )


Хм... тут в каждой второй строке функции из других файлов (я про логи). Как их обрабатывать? Не получится ли так что я кривым перезапуском положу службу совсем?
Спасибо сказали:
Аватара пользователя
McSim
Сообщения: 419
Статус: Экспериментатор
ОС: заGNU/Linux Debian

Re: bind9 не перезапускается

Сообщение McSim »

Нет, ну на каком-то шаге то должна случиться остановка службы...
Цель ведь - найти на каком шаге _остановки_ службы скрипт зависает.
А раскопать функции тоже не составит проблемы, я думаю...
Например log_daemon_msg берем из /lib/lsb/init-functions:

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

log_daemon_msg () {
    if [ -z "${1:-}" ]; then
        return 1
    fi
    log_daemon_msg_pre "$@"

    if [ -z "${2:-}" ]; then
        echo -n "$1:" || true
        return
    fi

    echo -n "$1: $2" || true
    log_daemon_msg_post "$@"
}

Ну и т.д. ... ничего в ней (функции) страшного нет )
Ну и я бы для начала просто пропускал функции log_*. Ну или не пропускал, а смотрел на название функции - оно вполне информативно.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: bind9 не перезапускается

Сообщение TonnyBennet »

Обновил систему. Пока всё перезапускается нормально. Мониторю.
Спасибо сказали: