无法让nscd运行。 DNScaching失效

我正在尝试解决DNScaching已经过时的MediaTemple服务器(运行CentOS5)上的问题 – 我想因为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并取消了定义日志文件位置的行的注释。 它创build了这个文件,但它从来没有写任何东西。

我试着看init脚本,但发现它没有帮助,因为脚本认为一切正常运行 – 服务返回,它启动正确。

我如何“解锁”nscd正在抱怨的子系统?

不幸的是,这些是nscd init脚本中的错误,而且这种状态没有任何意义。 初始化脚本希望pid文件是/var/run/nscd.pid (如果初始化脚本正在写pid文件的话)。 唉, nscd自己写pid文件到/var/run/nscd/nscd.pid

为了简化,请尝试使用nscd off进行故障排除。

如果您想知道ncsd无法开始检查strace -f /usr/sbin/nscd

探索bind-chroot包(及其依赖项)的选项。 只要yum安装并修改你的/etc/resolv.conf指向127.0.0.1。 它比大门更加稳固。

Nscd将caching文件写入磁盘。 如果在读取caching时出现问题,我会在开始崩溃之前看到问题。 尝试删除caching目录中的任何文件(应为/ var / cache / nscd),然后重新启动nscd。

我有一个稍微不同的问题 – 我认为这是由于系统分区上的磁盘空间不足而引起的。 我使用$ sudo kill <pid>杀死了服务,然后删除nscd.pid ,然后启动服务。 文件位置可能会因操作系统和风格而有所不同 对于CentOS(也可能是其他的Redhat变种),/ /var/run/nscd/nscd.pid

启动:

$ sudo service nscd start