Linux / コマンド / hostnamectl - ホスト名とシステム情報の確認・変更

hostnamectlは、起動やサービスを管理するsystemdを使う環境で、ホスト名やOS、カーネル、アーキテクチャの情報を表示します。set-hostnameでホスト名を変更することもできます。

staticは管理者が設定する永続的な名前、transientはネットワーク設定などから得る一時的な予備の名前、prettyは人向けの表示名です。有効なstatic名があれば、通常はtransient名より優先します。変更は名前とIPアドレスなどを対応させるDNS(Domain Name System)のレコードや/etc/hostsの項目を自動的にすべて修正するわけではありません。

基本的な文法

hostnamectl [コマンド] [引数]

インストールされている実装とオプションは、配布版によって異なる場合があります。man hostnamectlで現在のシステムの説明を確認してください。

使用例

現在の名前とシステム情報

ローカル操作ではsystemd-hostnamedと通信できる環境を用意し、名前・OS・カーネルなどの現在値を確認します。カーネル単独の情報は unameによるシステム情報 とも照合できます。

hostnamectl status

静的名前のみ確認

スクリプトやチェックに必要な永続的なホスト名を簡単に出力します。

hostnamectl --static

ホスト名の変更

web01.example.test は説明用なので、運用計画に合う対象名に置き換えます。変更前のstatic・transient・prettyを記録し、必要な管理権限で実行してください。選択フラグを付けない set-hostname は原則として3種の名前を変更します。staticだけを変える場合は --static を選ぶなど、範囲を先に決めます。

sudo hostnamectl set-hostname web01.example.test

現在のホスト名と変更範囲を確認する

hostnamectlはsystemd環境で静的ホスト名やOS・カーネルなどの情報を表示します。名前のみ確認したい場合は、次のように照会します。

hostnamectl --static

例の出力:

web01.example.test

sudo hostnamectl set-hostname 新しい名前は成功しても通常出力を行いません。再度hostnamectl --staticを実行して確認してください。ホスト名の変更はDNSレコードや/etc/hostsを自動で更新するわけではないため、サービスが名前解決に依存している場合は、その設定も別途確認する必要があります。

主なオプションと形式

オプション・形式 説明
status 現在のホスト名とシステム情報を表示します。
--static 静的ホスト名を対象とします。
--transient 一時的ホスト名を対象とします。
set-hostname 名前 ホスト名を設定します。
--pretty 人が読みやすい表示名を対象とします。

使用する際の注意点

実際のサーバーの名前を変更する前に、DNS、証明書、モニタリング、アプリケーション設定と/etc/hostsの依存関係を確認してください。変更後にhostnamectl statusで必要な名前の照会を確認し、元に戻す場合は記録した各値を確認し、--static・--transient・--pretty を必要に応じて付け、種別ごとに以前の値を設定します。元の名前がそれぞれ異なる場合、一つの名前を全種別へ設定するだけでは完全には戻りません。コンテナやsystemd-hostnamedへ接続できない環境では、コマンドが存在してもローカル照会・変更に失敗する場合があります。

よくある質問

hostnamectlで名前を変更するとDNSも変わりますか?

いいえ。ローカルシステムのホスト名の変更とDNSレコードの変更は別の作業です。

公式ドキュメント

オプションの正確な動作や実装ごとの違いは、hostnamectl関連公式ドキュメントで確認できます。