はじめに

こんにちは!今回はhostnameコマンドについて解説します。

hostnameはシステムのホスト名(コンピュータ名)を表示・変更するコマンドです。ネットワークを設定したり、サーバーを管理したり、現在のマシン名を確認したいときに使います。

シンプルだけど、システム管理では超よく使うコマンドですね。ネットワークの基本を理解するのに役立ちますよ。


hostnameコマンドとは

hostnameは、システムのホスト名を表示・変更する外部コマンドです。ホスト名はネットワーク上でマシンを識別するための名前です。

Linuxマシンをセットアップする時、どのコンピュータなのかを判定するのに使います。サーバー管理では必須の知識。シンプルなコマンドだからこそ、しっかり理解しておきたいですね。


基本構文

1
hostname [オプション] [新しいホスト名]

引数なしで実行するとホスト名を表示します。ホスト名を変更するには、root権限が必要です。


主なオプション

オプション 説明
-a すべてのホスト名エイリアスを表示
-d DNSドメイン名を表示
-f 完全修飾ドメイン名(FQDN)を表示
-i ホスト名に対応するIPアドレスを表示
-s ショートホスト名(ドメイン部分なし)を表示
-y NISドメイン名を表示
-F filename ファイルからホスト名を読み込んで設定
-b 新しいホスト名をブロードキャスト(古い)

使用例

例1: 現在のホスト名を表示

1
hostname

実行結果:

1
ubuntu-server

最もシンプルな使い方。現在のシステムのホスト名が表示されます。

例2: ショートホスト名を表示

1
hostname -s

実行結果:

1
ubuntu-server

ドメイン部分を除いたホスト名だけを表示します。

例3: 完全修飾ドメイン名(FQDN)を表示

1
hostname -f

実行結果:

1
ubuntu-server.example.com

ドメイン名を含む完全なホスト名を表示します。

例4: ホスト名に対応するIPアドレスを表示

1
hostname -i

実行結果:

1
192.168.1.100

ホスト名に紐付けられたIPアドレスを表示。ネットワーク設定の確認に便利です。

例5: ホスト名を変更する(root権限)

1
sudo hostname new-hostname

実行結果:

1
(成功時は何も表示されない)

ホスト名を一時的に変更します。ただし、再起動すると元に戻ります。

例6: ホスト名を永続的に変更

1
sudo hostnamectl set-hostname new-hostname

実行結果:

1
(成功時は何も表示されない)

hostnamectlを使うと、永続的にホスト名が変更されます。最新のLinuxではこちらが推奨です。

例7: DNSドメイン名を表示

1
hostname -d

実行結果:

1
example.com

ホスト名から抽出されたDNSドメイン名を表示します。

例8: すべてのエイリアスを表示

1
hostname -a

実行結果:

1
(設定されていない場合は何も表示されない)

ホスト名に設定されているすべてのエイリアスを表示。

例9: hostnameとhostnamectlの比較

1
2
hostname
hostnamectl

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ubuntu-server
   Static hostname: ubuntu-server
Transient hostname: ubuntu-server
         Icon name: computer-desktop
           Machine ID: 5a8f3e9c2b1d4a6f8e9c0d1f2a3b4c5d
              Boot ID: 8e9c0d1f2a3b4c5d5a8f3e9c2b1d4a6f
     Virtualization: kvm
   Operating System: Ubuntu 22.04.1 LTS
             Kernel: Linux 5.15.0-56-generic
       Architecture: x86-64

hostnamectlではより詳しい情報が表示されます。

例10: ホスト名を確認してからシステム情報を表示

1
2
3
echo "Hostname: $(hostname)"
echo "IP Address: $(hostname -i)"
echo "FQDN: $(hostname -f)"

実行結果:

1
2
3
Hostname: ubuntu-server
IP Address: 192.168.1.100
FQDN: ubuntu-server.example.com

シェルスクリプトで複数の情報を取得する例。


Tips・注意点

ホスト名の変更は再起動が必要な場合がある

hostnameコマンドで一時的に変更できますが、永続的に変更するには/etc/hostnameファイルを編集するか、hostnamectlを使う必要があります。

1
2
3
4
5
# 一時的な変更
sudo hostname new-name

# 永続的な変更(推奨)
sudo hostnamectl set-hostname new-name

ホスト名の命名規則

ホスト名は英数字とハイフンのみを使う必要があります。大文字は自動で小文字に変換されます。

1
2
3
4
5
# OK
hostname test-server-01

# NG(スペースや特殊文字は使用禁止)
hostname "test server"

DNSが設定されていない場合

DNSが正しく設定されていないと、hostname -fhostname -dがうまく動作しないことがあります。/etc/hostsファイルで設定を確認しましょう。

1
cat /etc/hosts

hostnameとhostnamectlの違い

最新のLinuxシステムではhostnamectlが推奨されます。より詳細な情報が得られ、永続的な設定が簡単です。


実践的な使い方

サーバーのセットアップスクリプト

1
2
3
4
#!/bin/bash
NEW_HOSTNAME="webserver-01"
sudo hostnamectl set-hostname $NEW_HOSTNAME
echo "Hostname changed to: $(hostname)"

サーバーをセットアップする時に、ホスト名を自動で設定するスクリプト。

ホスト名ベースの処理分岐

1
2
3
4
5
6
HOST=$(hostname -s)
if [[ $HOST == "production-"* ]]; then
  echo "This is a production server"
else
  echo "This is a development server"
fi

ホスト名に基づいて、本番環境かテスト環境かを判定。

ネットワーク設定確認スクリプト

1
2
3
4
5
6
echo "=== Hostname Configuration ==="
echo "Hostname: $(hostname)"
echo "Short name: $(hostname -s)"
echo "FQDN: $(hostname -f)"
echo "IP Address: $(hostname -i)"
echo "Domain: $(hostname -d)"

ネットワーク設定をまとめて確認するスクリプト。

コンテナ内での動的ホスト名設定

1
2
# Docker内で起動時にホスト名を設定
docker run --hostname my-container ubuntu

Dockerコンテナでホスト名を指定する例。


まとめ

hostnameコマンドのポイント:

  • シンプルな表示コマンド - 引数なしでホスト名表示
  • -s: ショートホスト名(ドメイン部分なし)
  • -f: 完全修飾ドメイン名(FQDN)
  • -i: IPアドレスを表示
  • -d: ドメイン名を表示
  • 変更は一時的 - 永続的にはhostnamectlまたはファイル編集が必要
  • よく使う組み合わせ: hostname, hostname -f, hostname -i

ネットワーク管理やサーバー運用には欠かせないコマンド。シンプルだからこそ、確実に理解しておくと、トラブルシューティングの時に役立ちますよ!