У меня есть небольшая программа на Java, которая вызывает InetAddress.getByName ("example.com") каждую секунду. Когда я запускаю его на CentOS 6.4 с помощью strace -f, я вижу, что /etc/resolv.conf открывается и читается один раз:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Когда я запускаю его в Debian 7, я вижу, что /etc/resolv.conf повторно открывается или 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
В обеих системах файл /etc/nsswitch.conf настроен с
хосты: файлы днс
Ни в одной из систем не запущен демон кэширования имен.
Я использовал одну и ту же версию Java HotSot Java JVM на обеих машинах, чтобы исключить любые различия в Java.
В коробке CentOS 6.4 установлен glibc 2.12. На коробке Debian 7 установлен glibc 2.13.
Чем объясняется разное поведение двух операционных систем в отношении открытия и чтения /etc/resolv.conf?