Linux hostname コマンド

Linux 命令大全Linux コマンド大全


hostname とは

hostname(ホスト名)は、ネットワーク上のコンピュータを識別するための一意の名前です。すべての人に名前があるように、各コンピュータにもネットワーク上で認識されるための固有の名前が必要です。

Linux システムでは、hostname は次の目的で使用されます:

  • ローカルコンピュータの識別
  • ネットワーク通信でのデバイス識別
  • 一部のネットワークサービスの動作に影響を与える
  • ターミナルのプロンプトに表示される

ホスト名は通常、次の3つのタイプに分類されます:

  1. 静的ホスト名:設定ファイルに保存され、システムを再起動しても変更されません
  2. 一時ホスト名:実行時に一時的に設定され、再起動後は無効になります
  3. プリティホスト名:特殊文字を含めることができる説明的な名前(例:「My Laptop」)

hostname コマンドの基本構文

hostname コマンドの基本的な使用形式は次のとおりです:

hostname [选项] [新主机名]

パラメータを付けずに直接実行すると、hostnameコマンドは現在のシステムのホスト名を表示します:

実例

$ hostname
ubuntu-server

一般的なオプションとパラメータの説明

hostname コマンドは、さまざまなタイプのホスト名を確認・設定するための複数のオプションをサポートしています:

オプション 説明
-a, --alias ホストのエイリアスを表示(設定されている場合)
-A, --all-fqdns すべてのネットワークインターフェースの FQDN(完全修飾ドメイン名)を表示
-b, --boot ホスト名が設定されていない場合は、デフォルトのホスト名を使用
-d, --domain DNS ドメイン名を表示
-f, --fqdn, --long FQDN(完全修飾ドメイン名)を表示
-F, --file 指定したファイルからホスト名を読み取る
-i, --ip-address ホストの IP アドレスを表示
-I, --all-ip-addresses すべてのネットワークインターフェースの IP アドレスを表示
-s, --short 短いホスト名を表示(ドメイン名部分を除く)
-y, --yp, --nis NIS ドメイン名を表示

ホスト名を設定する3つの方法

1. 一時的にホスト名を設定(再起動後は無効)

実例

sudo hostname new-hostname

例:

実例

$ sudo hostname test-server
$ hostname
test-server

注意:この方法で設定したホスト名は、システムを再起動すると元のホスト名に戻ります。

2. 永続的にホスト名を設定(設定ファイルを変更)

ほとんどの最新の Linux ディストリビューション(systemd を使用)では、次のようにしてホスト名を永続的に変更できます:

実例

sudo hostnamectl set-hostname new-hostname

例:

実例

$ sudo hostnamectl set-hostname production-server

このコマンドは同時に以下を変更します:

  • /etc/hostnameファイル
  • システムの静的ホスト名

3. 設定ファイルを手動で編集

ホスト名の設定ファイルを直接編集することもできます:

  1. 編集/etc/hostnameファイル:

    sudo nano /etc/hostname

    元の内容を削除し、新しいホスト名だけを書き込む

  2. 更新/etc/hostsファイルで、ホスト名を 127.0.0.1 にマッピングする行があることを確認します:

    127.0.0.1   localhost new-hostname
    
  3. 変更を適用(再起動不要):

    sudo systemctl restart systemd-hostnamed

さまざまな種類のホスト名を確認する

静的ホスト名を確認する

実例

hostnamectl --static
# または
cat /etc/hostname

一時ホスト名を確認する

実例

hostname
# または
hostnamectl --transient

プリティホスト名を確認する

実例

hostnamectl --pretty

FQDN(完全修飾ドメイン名)を確認する

実例

hostname -f
# または
hostnamectl --fqdn

実際の応用例

例1:現在のシステムの完全なホスト情報を確認する

実例

$ hostnamectl
   Static hostname: ubuntu-server
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 1a2b3c4d5e6f7g8h9i0j
           Boot ID: 1k2l3m4n5o6p7q8r9s0t
    Virtualization: kvm
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-42-generic
      Architecture: x86-64

例2:静的ホスト名とプリティホスト名を同時に設定する

実例

sudo hostnamectl set-hostname "server01" --pretty "Primary Web Server"

例3:ネットワーク経由でホスト名情報を取得する

実例

$ hostname -i
192.168.1.100

$ hostname -I
192.168.1.100 10.0.0.100

よくある問題と解決策

問題1:ホスト名を設定しても反映されない

解決策:

  1. 同時に以下を更新したことを確認します/etc/hostsファイル
  2. 他のサービス(NetworkManager など)がホスト名の設定を上書きしていないか確認します
  3. システムを再起動するか、以下を実行してみてください:
    sudo systemctl restart systemd-hostnamed

問題2:ホスト名に不正な文字が含まれている

解決策:

  • ホスト名に含めることができるのは:
    • 英字 a-z
    • 数字 0-9
    • ハイフン (-)
  • ハイフンで開始または終了することはできません
  • 長さは通常 63 文字以内に制限されます

問題3:ネットワークサービスが新しいホスト名を認識できない

解決策:

  1. 関連するネットワークサービスを再起動します:
    sudo systemctl restart networking
  2. DNS キャッシュをクリアします(該当する場合)
  3. DNS サーバーが更新されていることを確認します(ネットワーク内のサーバーの場合)

ベストプラクティスの推奨事項

  1. 命名規則:

    • 「web-prod-01」「db-backup-02」などの意味のある名前を使用する
    • 特殊文字とアンダースコアの使用を避ける
    • 特にサーバークラスターでは一貫性を保つ
  2. 複数ホスト名環境:

    • 静的ホスト名を主要な識別子として使用する
    • プリティホスト名を使用して人間が読める説明を提供する
    • 以下を使用して/etc/hosts重要なサーバーにエイリアスを追加する
  3. 自動化管理:

    • クラウド環境では、cloud-init を使用してホスト名を自動設定できます
    • 構成管理ツール(Ansible など)を使用してホスト名を一括管理する
  4. ドキュメント記録:

    • ホスト名とサーバーの役割の対応関係を示すドキュメントを維持する
    • 監視システムでホスト名を識別子として使用する

まとめ

hostname は Linux システム管理における基礎的でありながら重要な概念です。この記事を通じて、以下のことを習得できたはずです:

  1. さまざまなタイプのホスト名を確認・設定する方法
  2. ホスト名を永続的に変更する正しい手順
  3. ホスト名に関連するよくある問題の解決策
  4. ホスト名管理のベストプラクティス

本番環境のホスト名を変更する前に、必ず影響を評価してください。特にクラスター環境では、ホスト名の変更がサービスディスカバリや監視システムに影響を与える可能性があります。

Linux 命令大全Linux コマンド大全

その他の拡張