現場で言われたことについてメモ。
実施環境:
[root@testhost ~]# uname -a
Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# echo $SHELL
/bin/bash
Linuxサーバでホスト名を取得したい場合、unameコマンドとhostnameコマンドの2つの選択肢があります。
(一応、ファイル/etc/hostnameの中身を確認するという方法もあります。このファイルについては後述。)
[root@testhost ~]# uname -n
testhost
[root@testhost ~]# hostname
testhost
[root@testhost ~]# cat /etc/hostname
testhost
ただ、ホスト名を取得するためにhostnameコマンドを使用することはあまり好まれません。
理由は簡単で、hostnameコマンドはホスト名の変更もできてしまうためです。
うっかりhostnameコマンドの後に何らかの文字列が入ってしまった場合、確認メッセージも何もなくホスト名が変更されてしまい、場合によっては大きな問題を引き起こす可能性があります。
unameコマンドではホスト名の変更はできないため、安全を考えるならこちらを使用したほうが無難です。
(なお、下記の実行例でファイル/etc/hostnameの中身は変わっていません。これについても後述。)
[root@testhost ~]# hostname testhost2
[root@testhost ~]# uname -n
testhost2
[root@testhost ~]# hostname
testhost2
[root@testhost ~]# cat /etc/hostname
testhost
ちなみに、hostnameコマンドでのホスト名の変更は一時的なものです。
サーバを再起動すれば元に戻ってしまいます。
永続的にホスト名を変更したい場合は、ファイル/etc/hostnameを書き換えます。
上記の通りhostnameコマンドでのホスト名の変更はファイル/etc/hostnameには反映されませんので、ファイル自体を直接書き換える必要があります。
書き換えた後、サーバを再起動することで変更が反映されます。
[root@testhost ~]# echo testhost2 > /etc/hostname
[root@testhost ~]# uname -n
testhost
[root@testhost ~]# hostname
testhost
[root@testhost ~]# cat /etc/hostname
testhost2
[root@testhost2 ~]# uname -n
testhost2
[root@testhost2 ~]# hostname
testhost2
[root@testhost2 ~]# cat /etc/hostname
testhost2