Ao contrário de editar / etc / hostname, ou onde é relevante?
Deve haver uma boa razão (espero) - em geral, eu prefiro o jeito "antigo", onde tudo era um arquivo de texto. Não estou tentando ser contencioso - eu realmente gostaria de saber e decidir por mim mesmo se é uma boa razão. Obrigado.
Respostas:
fundo
hostnamectl
faz parte do systemd e fornece uma API adequada para lidar com a configuração de nomes de host de um servidor de maneira padronizada.Anteriormente, cada distribuição que não usava systemd tinha seus próprios métodos para fazer isso, o que gerava muita complexidade desnecessária.
hostnamectl
também reúne muitos dados diferentes em um único local para inicializar:A informação aqui é que vem
/etc/*release
,uname -a
etc. incluindo o nome do servidor.E os arquivos?
Aliás, tudo ainda está nos arquivos,
hostnamectl
está apenas simplificando a forma como temos que interagir com esses arquivos ou conhecer todos os seus locais.Como prova disso, você pode usar
strace -s 2000 hostnamectl
e ver de quais arquivos ele está acessando:systemd-hostname.service?
Para o observador astuto, você deve observar acima
strace
que nem todos os arquivos estão presentes.hostnamectl
está realmente interagindo com um serviço,systemd-hostnamectl.service
que de fato "interage" com a maioria dos arquivos com os quais a maioria dos administradores estaria familiarizada, como/etc/hostname
.Portanto, quando você executa,
hostnamectl
obtém detalhes do serviço. Este é um serviço ondemand, para que você não veja se está executando o tempo todo. Somente quandohostnamectl
é executado. Você pode vê-lo se executar umwatch
comando e começar a executarhostnamectl
várias vezes:A fonte para isso está aqui: https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c e se você olhar através dele, verá as referências a
/etc/hostname
etc.Referências
fonte
-e open,openat
?strace
8-). Embora, para ser sincero, eu ainda precisassegrep
obter a saída da maneira que queria, porquestrace
ainda mostraria a saída dohostnamectl
cmd, então meu caminho foi mais curto.rpm -qf $(type -P hostnamectl)
que preciso lembrar desse!Ainda é um arquivo de texto, você ainda pode editá-lo e não haverá problemas.
O arquivo de texto foi padronizado para
/etc/hostname
.De acordo com o mantenedor, os serviços systemd-hostname, systemd-timedated etc foram muito projetados para GUI (s) existente (s) como o GNOME. systemd-hostnamed permite que uma GUI solicite alterações no nome do host sem executar como root (dependendo da política do polkit). O Dbus também fornece um método para assinar alterações, adequado às necessidades da GUI. Talvez usado por um total de um aplicativo nesses casos :). Não sei, talvez os relógios usem systemd-timedated para ouvir a reconfiguração do fuso horário?
Pense no hostnamectl como um stub para exercitar o back-end da GUI, que também pode ou não ser um utilitário útil da CLI. O systemd-hostnamed não se destina especificamente a adicionar recursos inteiros que não são exercidos pelo código da GUI.
O serviço systemd-hostnamed não se destina a abstrair as diferenças entre distribuições. O sistema upstream padronizou em um único arquivo de configuração
/etc/hostname
, onde havia arquivos de configuração anteriormente diferentes em, por exemplo, distribuições baseadas no Debian vs Redhat.Isso pressupõe que o hostnamectl esteja conversando com a implementação padrão do systemd-hostnamed. Mas o AFAIK não existe uma distribuição atual que atualize o nome do arquivo usado.
Quero ressaltar que o carregamento
/etc/hostname
no momento da inicialização é realizado desde o início pelo systemd PID 1. Ele não depende da execução do systemd-hostnamed.Eu imagino que você pode notar uma diferença inofensiva, se você tiver uma GUI de configurações do sistema aberta e mostrar o nome do host ao mesmo tempo. Se você editar
/etc/hostname
e usarhostname --file /etc/hostname
para aplicar a alteração no sistema em execução, a exibição da GUI poderá não ser atualizada instantaneamente. systemd-hostnamed fornece notificações ao dbus sobre alterações em todas as versões do nome do host que mantém, portanto, a GUI pode não se dar ao trabalho de ouvir as notificações do nome do host do sistema fornecidas nos kernels modernos do Linux.(Tradicionalmente, é uma má idéia alterar o nome do host no tempo de execução. Isso pode causar problemas com softwares como o X. Estou certo de que esse problema não foi resolvido pelo systemd . Talvez tenha sido solucionado por distribuições que usam o systemd) .
fonte