Eu tenho um pequeno programa Java que executa o loop de InetAddress.getByName ("example.com") a cada segundo. Quando o executo em uma caixa do CentOS 6.4 usando 'strace -f', vejo que /etc/resolv.conf é aberto e lido uma vez:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Quando o executo no Debian 7, vejo que /etc/resolv.conf é aberto repetidamente ou 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 os sistemas têm o /etc/nsswitch.conf configurado com
hosts: arquivos dns
Nenhum sistema possui um daemon de armazenamento em cache de nomes em execução.
Usei a mesma versão da Oracle HotSot Java JVM em ambas as máquinas para descartar quaisquer diferenças de Java.
A caixa do CentOS 6.4 possui o glibc 2.12 instalado. A caixa Debian 7 tem o glibc 2.13 instalado.
O que explica o comportamento diferente entre os dois sistemas operacionais em relação à abertura e leitura do /etc/resolv.conf?