¿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
hostnamectl
es 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.
hostnamectl
tambié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,
hostnamectl
simplemente 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 hostnamectl
y ver de qué archivos está extrayendo:systemd-hostname.service?
Para el observador astuto, debe notar en lo anterior
strace
que no todos los archivos están presentes.hostnamectl
en realidad está interactuando con un servicio,systemd-hostnamectl.service
que 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
hostnamectl
obtiene detalles del servicio. Este es un servicio a pedido, por lo que no verá si se ejecuta todo el tiempo. Solo cuandohostnamectl
corre. Puede verlo si ejecuta unwatch
comando y luego comienza a ejecutarsehostnamectl
varias 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/hostname
etc.Referencias
fuente
-e open,openat
?strace
8-). Aunque, para ser honesto, todavía habría necesitado elgrep
para obtener la salida de la forma en que quería mostrarlo, b / cstrace
todavía habría mostrado la salida delhostnamectl
cmd, 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/hostname
en 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/hostname
y luego usahostname --file /etc/hostname
para 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