GNU/Linux >> Znalost Linux >  >> Linux

Jaký je smysl příkazu hostnamectl?

Pozadí

09 je součástí systemd a poskytuje správné API pro práci s nastavením názvů hostitelů serveru standardizovaným způsobem.

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

Dříve každé distro, které nepoužívalo systemd, mělo k tomu své vlastní metody, což znamenalo spoustu zbytečné složitosti.

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.

11 také stahuje mnoho nesourodých dat dohromady na jediné místo, kde se spouští:

$ 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

Informace zde pocházejí z 28 , 38 , atd. včetně názvu hostitele serveru.

A co soubory?

Mimochodem, vše je stále v souborech, 46 pouze zjednodušuje, jak musíme s těmito soubory pracovat nebo znát každé jejich umístění.

Jako důkaz toho můžete použít 53 a podívejte se, z jakých souborů to stahuje:

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

Pro bystrého pozorovatele byste si měli všimnout výše 68 že nejsou přítomny všechny soubory. 73 ve skutečnosti interaguje se službou 85 což ve skutečnosti provádí "interakci" s většinou souborů, které většina správců zná, jako je 98 .

Proto když spustíte 104 získáte podrobnosti ze služby. Jedná se o službu na vyžádání, takže neuvidíte, zda běží neustále. Pouze když 117 běží. Můžete to vidět, pokud spustíte 125 a poté spusťte 136 vícekrát:

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

Zdroj je zde:https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c a pokud si jej prohlédnete, uvidíte odkazy na 141 atd.

Odkazy

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

Linux
  1. V čem je kouzlo - (pomlčka) v parametrech příkazového řádku?

  2. Jaký je ekvivalent linuxového ~ (tilda) ve Windows?

  3. Jaký má smysl šifrování domovského adresáře?

  1. Pointa externího příkazu `cd`?

  2. Co dělá -e v bash shebang?

  3. Jaké je použití volby -o v příkazu useradd?

  1. Point of Uniq -u a co to dělá??

  2. Co je stromový příkaz v Ubuntu?

  3. Jaký je účel cd ` (backtick)?