/etc/hostname または関連するコンテンツを編集するのとは逆ですか?
そこには妥当な理由があるでしょう(私は希望します)。通常、私はすべてがテキストファイルである「古い」方法を好みます。私は議論をするつもりはありません。それが妥当な理由なのか、自分で知って決めたいのです。ありがとうございます。
答え1
背景
hostnamectl
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.
hostnamectl
また、ブートできるようにさまざまなデータを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
ここにある情報は、サーバーのホスト名を含むなどで提供され/etc/*release
ますuname -a
。
ファイルはどこにありますか?
ところで、すべてがまだファイルにあるので、hostnamectl
そのファイルと対話するか、各ファイルの場所を知る方法が簡素化されました。
strace -s 2000 hostnamectl
証拠として、どのファイルをインポートするかを確認して使用できます。
$ 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?
鋭い観察者であれば、上記strace
のすべてのファイルが存在するわけではないことを覚えておく必要があります。実際には、ほとんどの管理者に馴染みのあるほとんどのファイルと実際に「相互作用」するhostnamectl
サービスとの相互作用に関するものです。systemd-hostnamectl.service
/etc/hostname
したがって、実行すると、hostnamectl
サービスから詳細を取得できます。これはオンデマンドサービスなので、常に実行されていることを確認することはできません。走るときだけhostnamectl
。watch
コマンドの実行後にhostnamectl
何度も実行を開始すると、それを確認できます。
$ 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/etc/hostname
詳しく見ると、同等の参照が表示されます。
引用する
答え2
それでもテキストファイルなので編集できます。問題ありません。
テキストファイルは/etc/hostname
。
管理者によると、systemd-hostname、systemd-timedatedなどのサービスは、主にGNOMEなどの既存のGUI用に設計されています。 systemd-hostnamedを使用すると、GUIがrootとして実行せずにホスト名の変更を要求できます(polkitポリシーによって異なります)。 Dbusはまた、GUIの要件に適した変更を購読する方法も提供します。この場合、おそらく合計1つのアプリケーションで使用されていたでしょう。 :).おそらく、クロックがタイムゾーンの再構成を受信するためにsystemd-timedatedを使用しているかどうかわかりません。
Hostnamectl を GUI バックエンドを実行するスタブと考えてください。これは便利なCLIユーティリティでも、そうでない場合もあります。 systemd-hostnamedは、特にGUIコードで実行されていないすべての機能を追加するためのものではありません。
systemd-hostnamedサービスはいいえ分布間の違いを抽象化することを目的としています。 Upstream systemdは、/etc/hostname
以前にDebianとRedhatベースのディストリビューションに異なる設定ファイルがあった単一の設定ファイルを標準化します。
これは、hostnamectlがsystemd-hostnamedの標準実装と通信していると仮定します。しかし、私が知っている限り、現在使用されているファイル名にパッチを適用できるディストリビューションはありません。
/etc/hostname
起動時にロードはsystemd PID 1によって早く実行されることを指摘したいと思います。 systemd-hostnamedの実行に依存しません。
私はあなたを想像する可能システム設定GUIを開き、ホスト名も表示される場合は、無害な違いを確認してください。編集し/etc/hostname
てからhostname --file /etc/hostname
実行中のシステムに変更を適用すると、GUIディスプレイがすぐに更新されないことがあります。 systemd-hostnamedは、管理しているすべてのホスト名バージョンの変更に関するdbus通知を提供するため、GUIは最新のLinuxカーネルで提供されているシステムホスト名通知を受信する必要はありません。
(伝統的に実行時にホスト名を変更するのは悪い考えです。 Xなどのソフトウェアに問題が発生する可能性があります。この問題は解決されていないと思います。システム経由。おそらく、systemdを使用したディストリビューションがこの問題を解決した可能性があります。