GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es el punto del comando hostnamectl?

Antecedentes

hostnamectl es parte de systemd y proporciona una API adecuada para manejar la configuración de los nombres de host de un servidor de una manera estandarizada.

$ rpm -qf $(type -P hostnamectl)
systemd-219-57.el7.x86_64

Anteriormente, cada distribución que no usaba systemd tenía sus propios métodos para hacerlo, lo que generaba mucha complejidad innecesaria.

DESCRIPTION
  hostnamectl may be used to query and change the system hostname and
  related settings.

  This tool distinguishes three different hostnames: the high-level 
  "pretty" hostname which might include all kinds of special characters 
  (e.g. "Lennart's Laptop"), the static hostname which is used to
  initialize the kernel hostname at boot (e.g. "lennarts-laptop"), and the 
  transient hostname which is a default received from network 
  configuration. If a static hostname is set, and is valid (something
   other than localhost), then the transient hostname is not used.

   Note that the pretty hostname has little restrictions on the characters 
   used, while the static and transient hostnames are limited to the 
   usually accepted characters of Internet domain names.

   The static hostname is stored in /etc/hostname, see hostname(5) for 
   more information. The pretty hostname, chassis type, and icon name are 
   stored in /etc/machine-info, see machine-info(5).

   Use systemd-firstboot(1) to initialize the system host name for mounted 
   (but not booted) system images.

hostnamectl también reúne una gran cantidad de datos dispares en una sola ubicación para arrancar:

$ hostnamectl
   Static hostname: centos7
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 1ec1e304541e429e8876ba9b8942a14a
           Boot ID: 37c39a452464482da8d261f0ee46dfa5
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.21.1.el7.x86_64
      Architecture: x86-64

La información aquí proviene de /etc/*release , uname -a , etc. incluyendo el nombre de host del servidor.

¿Qué pasa con los archivos?

Por cierto, todo sigue en archivos, hostnamectl es simplemente simplificar cómo tenemos que interactuar con estos archivos o conocer cada una de sus ubicaciones.

Como prueba de esto puedes usar strace -s 2000 hostnamectl y ver de qué archivos está extrayendo:

$ strace -s 2000 hostnamectl |& grep ^open | tail -5
open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/self/stat", O_RDONLY|O_CLOEXEC) = 3
open("/etc/machine-id", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 4
open("/proc/sys/kernel/random/boot_id", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 4

systemd-nombre de host.servicio?

Para el observador astuto, debe notar en el strace anterior 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 está recibiendo detalles del servicio. Este es un servicio bajo demanda, por lo que no verá si se ejecuta todo el tiempo. Solo cuando hostnamectl carreras. Puedes verlo si ejecutas un watch y luego comience a ejecutar hostnamectl varias veces:

$ watch "ps -eaf|grep [h]ostname"
root      3162     1  0 10:35 ?        00:00:00 /usr/lib/systemd/systemd-hostnamed

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

  • systemd/src/nombre de host/hostnamectl.c
  • systemd/src/nombre de host/hostnamed.c
  • nombre de host
  • systemd-hostnamed.servicio

Linux
  1. ¿Cuál es la magia de - (un guión) en los parámetros de la línea de comandos?

  2. ¿Cuál es el propósito de cd ` (comilla grave)?

  3. ¿Qué se supone que debe hacer el comando de exportación en Linux?

  4. ¿Cuál es el uso de la opción -o en el comando useradd?

  5. ¿Cuál es la sintaxis correcta de find -exec?

¿Qué es el comando Watch de Linux + ejemplos?

El Punto De Uniq -u Y Que Hace??

Useradd vs Adduser:¿Cuál es la diferencia?

¿Qué es el comando matar en Linux?

¿Qué es el comando de árbol en Ubuntu?

useradd vs adduser:¿Cuáles son las diferencias?