GNU/Linux >> Linux の 問題 >  >> Linux

hostnamectl コマンドのポイントは何ですか?

背景

00 systemd の一部であり、標準化された方法でサーバーのホスト名を設定するための適切な API を提供します。

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

以前は、systemd を使用しない各ディストリビューションには、これを行うための独自の方法があり、多くの不必要な複雑さが生じていました。

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.

12 また、多くの異種データを 1 つの場所にまとめて起動します:

$ 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

ここの情報は 29 からのものです 、 39 など、サーバーのホスト名を含みます。

ファイルはどうですか?

ちなみに、すべてはまだファイルにあります 46 これらのファイルとやり取りする方法や、ファイルのすべての場所を知る方法を単純化するだけです。

この証拠として、 54 を使用できます どのファイルから取得しているかを確認します:

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

鋭い観察者は、上記の 69 に気付くはずです。 すべてのファイルが存在するわけではありません。 73 86 は実際にサービスと対話しています これは実際、99 など、ほとんどの管理者がよく知っているほとんどのファイルとの「対話」を行います。 .

したがって、 105 を実行すると サービスから詳細を取得しています。これはオンデマンド サービスであるため、常に実行されているかどうかはわかりません。 118 の場合のみ 実行します。 126 を実行すると表示されます コマンド、そして 136 の実行を開始します 複数回:

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

そのソースはここにあります:https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c を見ると、 141 など

参考文献

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

Linux
  1. Linux での hostnamectl コマンドの例

  2. hostnamectl:コマンドが見つかりません

  3. Ubuntu のツリー コマンドとは何ですか?

  1. コマンド ライン パラメータの - (ダッシュ) の魔法は何ですか?

  2. Windows での Linux の ~ (チルダ) に相当するものは何ですか?

  3. ホームディレクトリを暗号化するポイントは何ですか?

  1. Linux での export コマンドの役割は何ですか?

  2. rootwait/rootdelay のポイントは何ですか?

  3. 逆引き DNS コマンド ライン ユーティリティとは何ですか?