GNU/Linux >> Belajar Linux >  >> Linux

Apa gunanya perintah hostnamectl?

Latar Belakang

hostnamectl adalah bagian dari systemd, dan menyediakan API yang tepat untuk menangani pengaturan nama host server dengan cara standar.

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

Sebelumnya setiap distro yang tidak menggunakan systemd, memiliki metode mereka sendiri untuk melakukan hal ini yang membuat banyak kerumitan yang tidak perlu.

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 juga menggabungkan banyak data berbeda ke dalam satu lokasi untuk melakukan booting:

$ 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

Info di sini berasal dari /etc/*release , uname -a , dll. termasuk nama host server.

Bagaimana dengan filenya?

Kebetulan semuanya masih di file, hostnamectl hanyalah menyederhanakan bagaimana kita harus berinteraksi dengan file-file ini atau mengetahui setiap lokasinya.

Sebagai buktinya, Anda dapat menggunakan strace -s 2000 hostnamectl dan lihat file apa yang diambilnya:

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

Untuk pengamat yang cerdik, Anda harus memperhatikan strace di atas bahwa tidak semua file ada. hostnamectl sebenarnya berinteraksi dengan layanan, systemd-hostnamectl.service yang sebenarnya "berinteraksi" dengan sebagian besar file yang sudah dikenal sebagian besar admin, seperti /etc/hostname .

Oleh karena itu ketika Anda menjalankan hostnamectl Anda mendapatkan detail dari layanan. Ini adalah layanan ondemand, jadi Anda tidak akan melihat apakah berjalan sepanjang waktu. Hanya ketika hostnamectl berjalan. Anda dapat melihatnya jika Anda menjalankan watch perintah, lalu mulai jalankan hostnamectl beberapa kali:

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

Sumbernya ada di sini:https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c dan jika Anda melihatnya, Anda akan melihat referensi ke /etc/hostname dll.

Referensi

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

Linux
  1. Contoh Perintah hostnamectl di Linux

  2. hostnamectl:perintah tidak ditemukan

  3. Apa perintah pohon di Ubuntu?

  1. Apa keajaiban - (tanda hubung) dalam parameter baris perintah?

  2. Apa perintah ekspor yang seharusnya dilakukan di Linux?

  3. Apa yang dilakukan -e dalam bash shebang?

  1. Inti dari Uniq -u Dan Apa Fungsinya??

  2. Apa gunanya rootwait/rootdelay?

  3. Apa gunanya opsi -o dalam perintah useradd?