如何清空linux的DNS缓存

2024-12-26 12:47:12
推荐回答(2个)
回答1:

1. DNS存放位置:/etc/resolv.conf ,格式:nameserver 9.181.2.101
2. 如果要disableDNS, 就将该配置文件置为invalid nameserver: echo "nameserver 9.123.253.45" > /etc/resolv.conf
3. 要totally disableDNS, 还需要将系统中的DNS缓存清空:
(1) 用DNS缓存程序NSCD(name service cache daemon)负责管理DNS缓存
service nscd restart
Note: NSCD Name Service Cache Daemon, DNS缓存程序,负责管理DNS缓存。
(2)另一种实现DNS缓存则是用Bind来架设Caching Name Server
rndc flush
(3) 如果你的DNS服务器是用dnsmasq实现的
sudo dnsmasq restart
Note: DNSmasq是一个轻巧的容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务
4. 如果在程序中调用getaddrinfo和getnameinfo来获取域名对应的IP,在同一进程中,上一次成功获取的结果会被保留下来,即使在下一次调用之前disable了DNS并清空了系统的DNS缓存,下一次仍然能够解析出正确的IP。此时需要在调用这两个函数之前用res_init()函数来清空他们自己保留的缓存。

回答2:

#清理Linux系统缓存

1

[root@oracle ~]# echo 1 > /proc/sys/vm/drop_caches

注:1>. /proc是一个虚拟文件系统,可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。
0 – 不释放
1 – 释放页缓存
2 – 释放文件节点缓存和目录项缓存
3 – 释放所有缓存

[root@oracle ~]# sysctl -p
#查看剩余内存
[root@oracle ~]# free -m
total used free shared buffers cached
Mem: 3383 1952 1431 0 1 1136
-/+ buffers/cache: 814 2568
Swap: 1983 195 1788