Tôi có một chương trình Java nhỏ lặp lại gọi InetAddress.getByName ("example.com") mỗi giây. Khi tôi chạy nó trên hộp CentOS 6.4 bằng cách sử dụng 'strace -f', tôi thấy rằng /etc/resolv.conf được mở và đọc một lần:
$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6
Khi tôi chạy nó trên Debian 7, tôi thấy /etc/resolv.conf liên tục được mở hoặc 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
Cả hai hệ thống đều có /etc/nsswitch.conf được cấu hình với
máy chủ: tập tin dns
Cả hai hệ thống đều có một trình nền bộ nhớ đệm tên đang chạy.
Tôi đã sử dụng cùng một phiên bản JVM của Oracle HotSot trên cả hai máy để loại trừ mọi khác biệt về Java.
Hộp CentOS 6.4 đã cài đặt glibc 2.12. Hộp Debian 7 đã cài đặt glibc 2.13.
Điều gì giải thích cho hành vi khác nhau giữa hai hệ điều hành liên quan đến việc mở và đọc /etc/resolv.conf?