Tengo un pequeño programa Java que realiza un bucle que llama a InetAddress.getByName ("example.com") cada segundo. Cuando lo ejecuto en un cuadro de CentOS 6.4 usando 'strace -f' veo que /etc/resolv.conf se abre y lee una vez:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Cuando lo ejecuto en Debian 7 veo que /etc/resolv.conf se abre repetidamente 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
Ambos sistemas tienen /etc/nsswitch.conf configurado con
hosts: archivos dns
Ninguno de los dos sistemas tiene un demonio de almacenamiento en caché de nombres en ejecución.
Utilicé la misma versión de Oracle HotSot Java JVM en ambas máquinas para descartar cualquier diferencia de Java.
La caja CentOS 6.4 tiene instalado glibc 2.12. La caja Debian 7 tiene glibc 2.13 instalado.
¿Qué explica el comportamiento diferente entre los dos sistemas operativos con respecto a abrir y leer /etc/resolv.conf?