魔法のトリックをお見せしたいと思います。お気に入りのシェルプロンプトに移動し、次のように入力します:
[skipworthy@showme ~]$ hostname
showme
hostname Linuxには、コンピューターが「誰」と考えているかを照会するコマンドが用意されています。どうしてこうなりました?私のコンピュータはそれが何と呼ばれているのかをどうやって知るのですか?トリックがどのように行われるかを少しお見せしますが、最初に別のトリックをお見せしましょう:
[root@showme skipworthy]# hostnamectl set-hostname spot
[root@showme skipworthy]# hostname
spot
もう一度systemdに感謝します (これは、RedHatベースのシステムを含むすべてではありませんがほとんどの最新のGNU/ Linuxディストリビューションに実装されています)Linuxコンピューターの名前を変更するのは非常に簡単です。 (ちなみに、プロンプトの名前は次回のログインで変更されます。)DNSを使用して、名前をIPアドレスにマッピングすることにより、ネットワーク上のコンピューターを識別する方法について説明しました。これはその反対側にあります。ここでは、マシンが自分自身を識別する方法を確認しています。これは、コンピューターがドメインの一部である場合に認証などを正しく機能させるために重要です。
[読むこともお楽しみいただけます:知っておく必要のある10の基本的なLinuxコマンド]
ハードウェアが列挙され、起動時にドライバーがロードされた後、systemdベースのディストリビューションでは、ブートローダーがsystemdをロードして実行します。 スクリプト。このプロセスの開始間際は、ホスト名が設定されたときです:
2.653601] rtc_cmos 00:00: setting system clock to 2020-11-17 19:36:44 UTC (
1605641804)
[ 2.654885] Freeing unused kernel memory: 1980k freed
[ 2.655179] Write protecting the kernel read-only data: 12288k
[ 2.657125] Freeing unused kernel memory: 416k freed
[ 2.658710] Freeing unused kernel memory: 552k freed
[ 2.663220] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.663530] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.663543] random: systemd: uninitialized urandom read (16 bytes read)
[ 2.667147] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SEL
INUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +
XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 2.667189] systemd[1]: Detected virtualization kvm.
[ 2.667200] systemd[1]: Detected architecture x86-64.
[ 2.667204] systemd[1]: Running in initial RAM disk.
[ 2.667250] systemd[1]: Set hostname to <showme>.
[ 2.701020] random: systemd: uninitialized urandom read (16 bytes read)
それとは別に、systemdが存在するシステムでは はユーザースペースを管理していないため、いくつかのファイルでホスト名を設定できます。これらのファイルは、実際にはsystemdの場所にあります hostnamectlを使用すると、この情報を検索して記録します 指図。 hostname およびhostnamectl コマンドは実際にはgethostnameという名前のカーネルレベルのシステムコールを使用します 、getdomainname 、およびresolverによって提供されるいくつかの関数 システムコール。これらは、Linuxカーネルの歴史のかなり早い段階から存在しています。これらは、他の場所の中でも特に、プロンプトにマシンの名前を入力するためにシェルによって使用されるのと同じシステムコールです。
確認するファイルは両方とも/etcにあります を思い出してください。これは、Linuxシステムの構成と管理に使用されるほとんどのファイルのデフォルトの場所です。最初のものは、適切に、/etc/hostnameと呼ばれます :
[root@showme skipworthy]# cat /etc/hostname
showme
非常に簡単です:hostnameを呼び出すとき シェルプロンプトから、Linuxは/etc/hostnameを調べます。 答えのためのファイル。 hostnameを使用することもできます コンピューター名を変更するコマンドですが、systemdで管理されているカーネルでは、通常、hostnamectlを使用することをお勧めします。 代わりにコマンド。
もう1つのファイルは/etc/hostsです。 、これは、Linuxが/etc/resolv.confをチェックする前にIPアドレスを名前に変換する場所です。 DNS情報用。これが/etc/hostsです ファイル:
[skipworthy@showme ~]$ cat /etc/hosts
127.0.0.1 showme.forest showme
192.168.11.111 showme.forest showme
192.168.0.200 Jupiter
192.168.0.100 uhura 最初の数行は、見たいものです。形式は次のとおりです。
ip address fqdn alias つまり、IPアドレスがあります 、次に hostname.domainname (または完全修飾ドメイン名 )、続いてホスト名 。環境で使用されている場合は、エイリアスまたは追加のドメインエイリアスを追加することもできます。
-fを使用します hostnameを呼び出すときに切り替えます ホストのFQDNを表示するコマンド:
[skipworthy@showme ~]$ hostname -f
showme.forest [今すぐダウンロード:システム管理者によるBashスクリプトのガイド。 ]
hostnamectl コマンドには、他にも興味深い便利なスイッチとフラグがいくつかあります。環境タイプ(開発と本番など)を設定したり、場所のメモ(ラック3、200号室など)を配置したりすることもできます。これらをリモートで照会および設定できます。いつものように、古き良きマニュアルページからあらゆる種類のクールなことを学ぶことができます。