GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Sinn des Befehls hostnamectl?

Hintergrund

hostnamectl ist Teil von systemd und bietet eine geeignete API für die standardisierte Einstellung der Hostnamen eines Servers.

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

Früher hatte jede Distribution, die systemd nicht verwendete, ihre eigenen Methoden, um dies zu tun, was zu einer Menge unnötiger Komplexität führte.

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 zieht auch viele unterschiedliche Daten an einem einzigen Ort zusammen, um zu booten:

$ 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

Die Informationen hier stammen von /etc/*release , uname -a , usw. einschließlich des Hostnamens des Servers.

Was ist mit den Dateien?

Übrigens ist alles noch in Dateien, hostnamectl vereinfacht lediglich, wie wir mit diesen Dateien interagieren oder ihren jeweiligen Speicherort kennen müssen.

Als Beweis dafür können Sie strace -s 2000 hostnamectl verwenden und sehen, aus welchen Dateien es zieht:

$ 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-hostname.service?

Für den scharfsinnigen Beobachter sollte Ihnen obiger strace auffallen dass nicht alle Dateien vorhanden sind. hostnamectl tatsächlich mit einem Dienst interagiert, systemd-hostnamectl.service was tatsächlich die "Interaktion" mit den meisten Dateien übernimmt, mit denen die meisten Administratoren vertraut sind, wie z. B. /etc/hostname .

Daher, wenn Sie hostnamectl ausführen Sie erhalten Details vom Dienst. Dies ist ein On-Demand-Dienst, sodass Sie nicht sehen, ob er die ganze Zeit läuft. Nur bei hostnamectl läuft. Sie können es sehen, wenn Sie watch ausführen Befehl, und starten Sie dann die Ausführung von hostnamectl mehrfach:

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

Die Quelle dafür ist hier:https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c und wenn Sie sie durchsehen, sehen Sie die Verweise auf /etc/hostname usw.

Referenzen

  • systemd/src/hostname/hostnamectl.c
  • systemd/src/hostname/hostnamed.c
  • hostnamectl
  • systemd-hostnamed.service

Linux
  1. hostnamectl-Befehlsbeispiele in Linux

  2. hostnamectl:Befehl nicht gefunden

  3. Was ist der Baumbefehl in Ubuntu?

  4. Was soll der export-Befehl unter Linux bewirken?

  5. Was ist der Sinn von rootwait/rootdelay?

Was ist der Linux-Überwachungsbefehl + Beispiele

Useradd vs. Adduser:Was ist der Unterschied?

Was ist der Kill-Befehl in Linux?

useradd vs. adduser:Was sind die Unterschiede?

Was ist das Reverse-DNS-Befehlszeilendienstprogramm?

Was ist die korrekte find -exec-Syntax