Existem duas maneiras de fazer com que o dnsmasq recarregue um arquivo hosts:
-
Como Aaron Copley anotado em seu comentário , envie
SIGHUP
para dnsmasq. Na página de manual :When it receives a SIGHUP, dnsmasq clears its cache and then re-loads /etc/hosts and /etc/ethers and any file given by --dhcp-hostsfile, --dhcp-hostsdir, --dhcp-optsfile, --dhcp-optsdir, --addn-hosts or --hostsdir. The dhcp lease change script is called for all existing DHCP leases. If --no-poll is set SIGHUP also re-reads /etc/resolv.conf. SIGHUP does NOT re-read the configuration file.
Observe que o dnsmasq não é reiniciado nesse caso, mas relê vários outros arquivos (e chama o script de mudança de concessão do dhcp para todas as concessões DHCP existentes). Se a ativação de recarregamentos for muito rápida, você poderá debitar o sinal
-
Use a opção
--hostsdir
. Novamente na página do manual :--hostsdir=<path>
Read all the hosts files contained in the directory. New or changed files are read automatically. See --dhcp-hostsdir for details.Para referência, aqui está a documentação para
--dhcp-hostsdir
:--dhcp-hostsdir=<path>
This is equivalent to dhcp-hostsfile, except for the following. The path MUST be a directory, and not an individual file. Changed or new files within the directory are read automatically, without the need to send SIGHUP. If a file is deleted or changed after it has been read by dnsmasq, then the host record it contained will remain until dnsmasq receives a SIGHUP, or is restarted; ie host records are only added dynamically.Isso tem algumas vantagens em comparação com a primeira opção: o dnsmasq irá reler o (s) arquivo (s) host automaticamente, sem
SIGHUP
requerido, e; somente os arquivos do host são recarregados, nenhuma outra ação é executada.Uma possível desvantagem é que, como a documentação para
--dhcp-hostsdir
indica, novas entradas de host são adicionadas dinamicamente, mas excluídas ou alteradas, as entradas não são atualizadas. Simon Kelley, o autor do dnsmasq, confirmou que isso ocorre por design .