我正在尝试解决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