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