GNU/Linux >> Tutoriels Linux >  >> Linux

A quoi sert la commande hostnamectl ?

Contexte

hostnamectl fait partie de systemd et fournit une API appropriée pour gérer la définition des noms d'hôte d'un serveur de manière standardisée.

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

Auparavant, chaque distribution qui n'utilisait pas systemd avait ses propres méthodes pour le faire, ce qui entraînait beaucoup de complexité inutile.

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 rassemble également de nombreuses données disparates en un seul emplacement pour démarrer :

$ 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

L'information ici provient de /etc/*release , uname -a , etc., y compris le nom d'hôte du serveur.

Qu'en est-il des fichiers ?

Au fait, tout est encore dans des fichiers, hostnamectl simplifie simplement la façon dont nous devons interagir avec ces fichiers ou connaître leur emplacement.

Comme preuve de cela, vous pouvez utiliser strace -s 2000 hostnamectl et voir de quels fichiers il extrait :

$ 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 ?

Pour l'observateur avisé, vous devriez remarquer dans le strace ci-dessus que tous les fichiers ne sont pas présents. hostnamectl est en train d'interagir avec un service, systemd-hostnamectl.service qui en fait "interagit" avec la plupart des fichiers que la plupart des administrateurs connaissent, tels que /etc/hostname .

Par conséquent, lorsque vous exécutez hostnamectl vous obtenez des détails du service. Il s'agit d'un service à la demande, vous ne verrez donc pas s'il fonctionne tout le temps. Uniquement lorsque hostnamectl court. Vous pouvez le voir si vous exécutez un watch commande, puis commencez à exécuter hostnamectl plusieurs fois :

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

La source est ici :https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c et si vous le parcourez, vous verrez les références à /etc/hostname etc.

Références

  • systemd/src/hostname/hostnamectl.c
  • systemd/src/hostname/hostnamed.c
  • nom_hôtectl
  • systemd-hostnamed.service

Linux
  1. Le point de la commande externe `cd` ?

  2. Qu'est-ce que la commande tree dans Ubuntu ?

  3. Quelle est la magie de - (un tiret) dans les paramètres de ligne de commande ?

  4. Quel est l'équivalent du ~ (tilde) de Linux dans Windows ?

  5. Quel est le but de cd ` (backtick) ?

Qu'est-ce que la commande Linux Watch + Exemples

Useradd vs Adduser :quelle est la différence ?

Qu'est-ce que la commande kill sous Linux ?

useradd vs adduser :quelles sont les différences ?

Qu'est-ce que l'utilitaire de ligne de commande DNS inversé ?

Quelle est la bonne syntaxe find -exec