Я пытаюсь устранить проблему на сервере MediaTemple (под управлением CentOS5), где кеш DNS устарел - я думаю, из-за того, что произошел сбой nscd. Я пробовал перезапустить nscd:
# service nscd restart
Stopping nscd: [FAILED]
Starting nscd: [ OK ]
Это имеет смысл, поскольку я считаю, что nscd разбился, поэтому он еще не должен работать, но когда я просматриваю статус nscd:
# service nscd status
nscd dead but subsys locked
И ps -A
не возвращает процессов, связанных с nscd (я предполагаю, потому что он мертв). Я редактировал /etc/nscd.conf
и раскомментировал строку, определяющую расположение файла журнала. Он создал файл, но никогда в него ничего не записывает.
Я попытался взглянуть на сценарий инициализации, но обнаружил, что это не помогает, поскольку сценарий считает, что все работает нормально - служба возвращает, что он запустился правильно.
Как мне "разблокировать" подсистему, на которую жалуется nscd?
Изучите вариант пакета bind-chroot (и его зависимости). Просто установите yum и измените ваш /etc/resolv.conf так, чтобы он указывал на 127.0.0.1. Это немного надежнее, чем nscd out of gates.
К сожалению, это ошибки в сценариях инициализации nscd, и статус не имеет значения. Сценарий инициализации ожидает, что файл pid будет /var/run/nscd.pid
(что было бы, если бы сценарий инициализации записывал файл pid). Увы, nscd
сам записывает свой файл pid в /var/run/nscd/nscd.pid
.
Чтобы упростить, попробуйте устранить неполадки с помощью nscd
выкл.
Если вы хотите знать, что ncsd
не может начать исследовать вывод strace -f /usr/sbin/nscd
.
Nscd записывает файлы кэша на диск. Я видел проблемы с ним раньше, когда он вылетал при запуске, если есть проблема с чтением этого кеша. Попробуйте удалить все файлы в каталоге кеша (должен быть / var / cache / nscd) и снова перезапустить nscd.
У меня была немного другая проблема - я думаю, она возникла из-за нехватки места на диске в системном разделе. Я убил сервис, используя $ sudo kill <pid>
, затем удалите nscd.pid
, затем запустите службу. расположение файла может отличаться в зависимости от ОС и типа. Для CentOS (и, предположительно, других вариантов Redhat), /var/run/nscd/nscd.pid
Запускать:
$ sudo service nscd start