Ho un piccolo programma Java che esegue il loop chiamando InetAddress.getByName ("esempio.com") ogni secondo. Quando lo eseguo su un box CentOS 6.4 usando 'strace -f' vedo che /etc/resolv.conf viene aperto e letto una volta:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Quando lo eseguo su Debian 7 vedo che /etc/resolv.conf viene ripetutamente aperto o stat () 'd:
$ grep /etc/resolv.conf strace.out
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
Entrambi i sistemi hanno /etc/nsswitch.conf configurato con
host: file dns
Nessuno dei due sistemi ha un demone di memorizzazione nella cache dei nomi in esecuzione.
Ho usato la stessa versione di Oracle HotSot Java JVM su entrambe le macchine per escludere eventuali differenze Java.
Nella confezione di CentOS 6.4 è installato glibc 2.12. Il box Debian 7 ha glibc 2.13 installato.
Cosa spiega il diverso comportamento tra i due sistemi operativi per quanto riguarda l'apertura e la lettura /etc/resolv.conf?