когда загружается файл /etc/hosts?

Я пытаюсь настроить некоторые виртуальные хосты, и я совершенно не понимаю, когда загружается этот файл.

В какой момент /private/etc/hostsзагружается? При входе? При каждом вызове DNS? Когда Mac OS перезагружается?

Ответы (2)

Страница руководства hosts (5) дает некоторое представление о том, как /etc/hostsэто использовать.

Файл используется mDNSResponder, и, учитывая ваш вопрос, я подозреваю, что вы хотите, чтобы изменения отражались /etc/hostsв ваших поисках DNS.

После каждого редактирования /etc/hostsсброса mDNSResponderкэша с помощью этой технической заметки Apple, OS X: Как сбросить кэш DNS :

sudo dscacheutil -flushcache

В примечании объясняется, когда вам может понадобиться это сделать:

Когда вы можете захотеть это сделать

OS X хранит локальный кэш разрешенных DNS-запросов в течение времени, определенного DNS-сервером, но иногда может потребоваться немедленно сбросить кэш и повторно запросить DNS-сервер. Например, это можно сделать после изменения записи на сервере или добавления новой записи.

Обычно изменения в /etc/hostsобновляются автоматически в течение нескольких секунд, и мне не нужно вручную сбрасывать кеш DNS.

Если вы попытаетесь запустить sudo opensnoop|grep /etc/hostsи отредактировать файл /etc/hosts, /etc/hostsон будет прочитан mDNSResponderпрактически сразу после его сохранения.

Я подозреваю, что в более поздних версиях OS X Apple начала активно следить hostsза изменениями файла, используя механизм kqueue.