魔法のトリックをお見せしたいと思います。お気に入りのシェルプロンプトに移動し、次のように入力します:
[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号室など)を配置したりすることもできます。これらをリモートで照会および設定できます。いつものように、古き良きマニュアルページからあらゆる種類のクールなことを学ぶことができます。