¿A diferencia de editar / etc / hostname, o donde sea relevante?
Debe haber una buena razón (espero): en general, prefiero la forma "antigua", donde todo era un archivo de texto. No estoy tratando de ser polémico; realmente me gustaría saberlo y decidir por mí mismo si es una buena razón. Gracias.

Respuestas:
Antecedentes
hostnamectles parte de systemd y proporciona una API adecuada para tratar de configurar los nombres de host de un servidor de forma estandarizada.Anteriormente, cada distribución que no usaba systemd tenía sus propios métodos para hacerlo, lo que generaba una gran complejidad innecesaria.
hostnamectltambién reúne muchos datos dispares en una sola ubicación para arrancar:La información que aquí está viniendo
/etc/*release,uname -a, etc., incluyendo el nombre de host del servidor.¿Qué hay de los archivos?
Por cierto, todo sigue en los archivos,
hostnamectlsimplemente está simplificando cómo tenemos que interactuar con estos archivos o conocer cada una de sus ubicaciones.Como prueba de esto, puede usar
strace -s 2000 hostnamectly ver de qué archivos está extrayendo:systemd-hostname.service?
Para el observador astuto, debe notar en lo anterior
straceque no todos los archivos están presentes.hostnamectlen realidad está interactuando con un servicio,systemd-hostnamectl.serviceque de hecho "interactúa" con la mayoría de los archivos con los que la mayoría de los administradores estarían familiarizados, como/etc/hostname.Por lo tanto, cuando ejecuta
hostnamectlobtiene detalles del servicio. Este es un servicio a pedido, por lo que no verá si se ejecuta todo el tiempo. Solo cuandohostnamectlcorre. Puede verlo si ejecuta unwatchcomando y luego comienza a ejecutarsehostnamectlvarias veces:La fuente está aquí: https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c y si lo revisa, verá las referencias a
/etc/hostnameetc.Referencias
fuente
-e open,openat?strace8-). Aunque, para ser honesto, todavía habría necesitado elgreppara obtener la salida de la forma en que quería mostrarlo, b / cstracetodavía habría mostrado la salida delhostnamectlcmd, por lo que mi camino fue más corto.rpm -qf $(type -P hostnamectl)que tengo que recordar!Todavía es un archivo de texto, aún puede editarlo y no habrá ningún problema.
El archivo de texto ha sido estandarizado para
/etc/hostname.Según el mantenedor, los servicios systemd-hostname, systemd-timedated, etc. fueron diseñados para GUI (s) existentes como GNOME. systemd-hostnamed permite que una GUI solicite cambios en el nombre de host sin ejecutarse como root (según la política de Polkit). Dbus también proporciona un método para suscribir cambios, que se adapta a las necesidades de la GUI. Tal vez utilizado por un total de una aplicación en estos casos :). No sé, ¿tal vez los relojes usan systemd-timedated para escuchar la reconfiguración de la zona horaria?
Piense en hostnamectl como un código auxiliar para ejercitar el backend de la GUI, que podría o no ser una utilidad CLI útil. systemd-hostnamed específicamente no está destinado a agregar funciones completas que no son ejercidas por el código GUI.
El servicio systemd-hostnamed no pretende abstraer las diferencias entre distribuciones. Upstream systemd estandarizado en un solo archivo de configuración
/etc/hostname, donde anteriormente había diferentes archivos de configuración en, por ejemplo, distribuciones basadas en Debian vs Redhat.Esto supone que hostnamectl está hablando con la implementación estándar de systemd-hostnamed. Pero AFAIK no hay distribución actual que parchee el nombre de archivo utilizado.
Quiero señalar que la carga
/etc/hostnameen el momento del arranque se realiza desde el principio por systemd PID 1. No depende de ejecutar systemd-hostnamed.Me imagino que puede notar una diferencia inofensiva, si tiene una GUI de configuración del sistema abierta y muestra el nombre de host al mismo tiempo. Si edita
/etc/hostnamey luego usahostname --file /etc/hostnamepara aplicar el cambio al sistema en ejecución, la pantalla de la GUI podría no actualizarse instantáneamente. systemd-hostnamed proporciona notificaciones dbus sobre los cambios en todas las versiones del nombre de host que mantiene, por lo que la GUI podría no molestarse en escuchar las notificaciones de nombre de host del sistema proporcionadas en los núcleos modernos de Linux.(Tradicionalmente, es una mala idea cambiar el nombre de host en tiempo de ejecución. Puede causar problemas con software como X. Estoy seguro de que este problema no se soluciona con systemd . Quizás se haya solucionado mediante distribuciones que usan systemd) .
fuente