编写了一个脚本,运行后可以关闭Linux下基于nscd的DNS缓存。
#!/bin/bash
# 定义配置文件路径
NSCD_CONF="/etc/nscd.conf"
# 检查文件是否存在
if [ ! -f "$NSCD_CONF" ]; then
echo "no file: $NSCD_CONF"
exit 1
fi
# 备份原有配置文件
cp $NSCD_CONF{,.bak}
# 修改配置:将'enable-cache hosts yes'替换为'enable-cache hosts no'
sed -i '/enable-cache\s*hosts\s*yes/s/yes/no/' $NSCD_CONF
# 检查sed命令是否成功执行
if [ $? -ne 0 ]; then
echo "Failed to edit /etc/nscd.conf, no su I guess"
exit 1
fi
# 重启nscd服务
systemctl restart nscd
# 检查nscd服务状态
if systemctl status nscd | grep -q "active (running)"; then
echo "Success"
else
echo "restart nscd failed"
fi
如果要开启DNS缓存,只需要将备份文件/etc/nscd.conf.bak
覆盖/etc/nscd.conf
即可。
cp /etc/nscd.conf{.bak,}