Arka fon
hostnamectl
systemd'nin bir parçasıdır ve bir sunucunun ana bilgisayar adlarını standart bir şekilde ayarlamak için uygun bir API sağlar.
$ rpm -qf $(type -P hostnamectl)
systemd-219-57.el7.x86_64
Daha önce systemd kullanmayan her dağıtımın, bunu yapmak için çok fazla karmaşıklık gerektiren kendi yöntemleri vardı.
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
ayrıca birçok farklı veriyi önyüklemek için tek bir konuma bir araya getirir:
$ 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
Burada bilgi geliyor /etc/*release
, uname -a
sunucunun hostname dahil vb.
Dosyalar ne olacak?
Bu arada, her şey hala dosyalarda, hostnamectl
sadece bu dosyalarla nasıl etkileşimde bulunacağımızı veya her konumlarını nasıl bileceğimizi basitleştiriyor.
Bunun kanıtı olarak, strace -s 2000 hostnamectl
hangi dosyaları çektiğini görebilir ve görebilirsiniz:
$ 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?
Zeki gözlemciye göre, yukarıda strace
tüm dosyaların mevcut olmadığını fark etmelisiniz . hostnamectl
aslında systemd-hostnamectl.service
, çoğu yöneticinin aşina olduğu dosyaların çoğuyla "etkileşimde bulunma" gibi bir hizmetle etkileşim halindedir /etc/hostname
.
Bu nedenle, çalıştırdığınızda hostnamectl
hizmetten ayrıntılar alırsınız. Bu bir ondemand hizmetidir, bu nedenle sürekli çalışıp çalışmadığını göremezsiniz. Sadece çalışırken hostnamectl
. Bir watch
komut çalıştırır ve sonra hostnamectl
birden çok kez çalıştırmaya başlarsanız bunu görebilirsiniz :
$ watch "ps -eaf|grep [h]ostname"
root 3162 1 0 10:35 ? 00:00:00 /usr/lib/systemd/systemd-hostnamed
Bunun kaynağı burada: https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c ve eğer bakarsanız, /etc/hostname
vb . Referansları göreceksiniz .
Referanslar