hostnamectlコマンドでホスト名を変更する

ホスト名の変更

sysmemdが導入されているLinuxディストリビューションではhostnamectlコマンドでホスト名を変更できる。

$ sudo hostnamectl set-hostname 新しいホスト名

例えばfoo.example.comというホスト名にする場合は以下のようになる。

$ sudo hostnamectl set-hostname foo.example.com

/etc/hostnameファイルも更新される。

$ cat /etc/hostname
foo.example.com

現在のホスト名の確認

hostnamectl statusコマンドで現在のホスト名を確認できる。 (サブコマンドstatusは省略可)

$ hostnamectl status
 Static hostname: foo.example.com
       Icon name: computer-vm
         Chassis: vm
      Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
         Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Virtualization: amazon
Operating System: Ubuntu 22.04.2 LTS
          Kernel: Linux 5.19.0-1028-aws
    Architecture: x86-64
 Hardware Vendor: Amazon EC2
  Hardware Model: t3.large

Static hostnameにホスト名が表示される。

ホスト名だけを表示したい場合は--staticオプションを付ける。

$ hostnamectl status --static
foo.example.com

hostnameサブコマンドでもホスト名だけ取得できる。

$ hostnamectl hostname
foo.example.com

hostnameコマンドとの違い

従来通りhostnameコマンドでも変更できる。

$ sudo hostname 新しいホスト名

ただしこの方法では/etc/hostnameファイルが変更されないため、再起動するとホスト名が元に戻る。

hostnamectl set-hostnameコマンドでホスト名を変更する場合は/etc/hostnameファイルも修正される。
そのため再起動してもホスト名が元に戻らない。

hostnamectlが使えない場合

hostnamectlコマンドが使えない場合はhostnameコマンドで変更する。

$ sudo hostname 新しいホスト名

hostnameコマンドで更新したホスト名はOSを再起動すると元に戻ってしまうので、 恒久対応するために/etc/hostnameファイルも更新する。

$ sudo vi /etc/hostname