名前の変更を有効にするためにリブートする必要なく、Linuxホストの名前を変更するにはどうすればよいですか?


26

serverfaultでこの質問に対する答えを探しましたが、見つかりませんでした。私はそれが可能であることを知っていますが、私はそれをする方法を覚えていません。Linuxホストのホスト名を変更し、その変更を再起動せずに有効にするにはどうすればよいですか?

Ubuntu 16とUbuntu 18を使用しています。

Ubuntuの大きな特徴は、グラフィカルデスクトップとグラフィカルシステムユーティリティです。ただし、本番環境でUbuntuを実行しているため、これらの機能が本番環境で必要なリソースを消費しないように、グラフィカルデスクトップまたはユーティリティを使用しないことを選択しました。

ホストの名前を変更するには、ファイルを編集することを知っています。

  • /etc/hostname
  • /etc/hosts

/etc/hostname1ちょうど新しいホスト名で(すぐに元のホスト名であることを)現在のホスト名を置き換えます。

/etc/hostsファイル内のUbuntuには次の行があります。

127.0.1.1 your-hostname your-hostname

ホストが起動し、ネットワーク内で自身を確立している間、ブートストラップとして機能します。ホスト名を変更する前your-hostnameは、現在(以前のホスト名になります)で、ホストのホスト名を変更する一環として、その名前を新しい名前に置き換えます。

私がよく知っているのは、上記の2つのステップを実行してからホストを再起動することです。しかし、実稼働サーバーの場合のように、多くの場合、その名前の変更を実行したいのですが、ホストを再起動したくありません。

ホストのホスト名を変更し、ホストを再起動せずにその変更を有効にするにはどうすればよいですか?


1
「Ubuntu 16」や「Ubuntu 18」のようなものはありません。16.04と16.10の間には16.10と17.04の間と同じくらい大きな違いがあります。
パイプ

回答:


49

hostnamectlツールを使用して、systemdベースのシステムでホスト名のカーネルのアイデアを変更できます。例えば:

hostnamectl set-hostname whatever

次のコマンドを使用して、ホスト名に関するシステムの現在のアイデアを表示できます。

hostnamectl             # equivalent to hostnamectl status

これは、実行中のプロセスのホスト名の考え方を変更しないことに注意してください。このようなプロセスは、更新するためにホスト名を再度確認する必要があり、ほとんどプロセスはありません。したがって、このようなプロセスを再起動する必要があります。ためには、すべての新しいホスト名の使用を開始するためのプロセス、それらを再起動する必要があります。一般に、すべてのサービスを個別に再起動するよりも、システムを再起動する方が簡単です。


1
名前の変更後にサーバーを再起動したくない場合、サーバーでネットワークを再起動する必要がありますか?私はこれを見つけました: sudo /etc/init.d/network restart それとは別に、そのコマンドを介してサーバー上のネットワークを再起動すると、サーバーの名前が有効であることを知る必要がある実行中のプロセスを再起動するというあなたのポイントがわかります。ホストを再起動すると修正されることに同意しました。つまり、ホストの名前を本当に変更したいが、再起動したくない場合があります。sudo /etc/init.d/network restart再起動なしで新しいホスト名を有効にするための意見とその有用性
ピータージラクエルドリッチ

3
@PeterJirak:完全に役に立たない。それらのプログラム(ホスト名を知る必要がある)が以前にホスト名の更新を監視することを気にしなかった場合、それらは今気にしません。eth0でIPアドレスを再構成するようにシステムに指示しても、少しは影響しません。
深刻さ

@PeterJirak「新しいホスト名を有効にする」とはどういう意味ですか?前述のように、それはすぐに有効になり、新しく開始されたプロセスはそれを認識します。また、なぜネットワークの再起動について尋ねているのか理解できませんか?それはホスト名と何の関係がありますか?
マイケルハンプトン

5
「ネットワーキング」全体が、そのような名前の/etc/init.dスクリプトがあるという理由だけで、再起動できるユーザースペースサービスであるという一般的な誤解です。
悲惨さ

2
@PeterJirak余談/etc/init.dですが、systemdシステムではサービスを実行するのは間違った方法です。それはちょうどそこに古いシステムV.への後方互換性のためである
rexkogitans

22

次を使用して、カーネル内のホスト名を変更できます。

hostname NEWNAME

Linuxでは、これは実質的に次のいずれかに等しくなります。

sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname

これはsystemd(systemd- hostnamedを必要とするhostnamectlとは異なります)や他の非標準ツールに依存せず、多くの場合(特にshellscript-initシステムで)最初のホスト名が最初に設定された方法です。

ほとんどのプログラムとサービスは、実際にはホスト名を使用しません。いくつかの機能(PostfixやKerberosを使用するサービスなど)は、1つずつ再起動できます。

(再起動するまでホスト名をキャッシュするプログラムもあれば、必要になるたびに照会するプログラムもあります。プログラムは、変更通知を受信するためにpoll(2)/ proc / sys / kernel / hostnameする機能もありますが、ほとんどありません。)


2
これらの方法は永続的ではなく、再起動後も存続しないことに注意してください。
マイケルハンプトン

3
幸いなことに、OPは既に質問自体の永続性をカバーしています。
荒廃

1
Postfixはハード内の1つのまたは2つの場所でコード化されたホスト名を持っていること /etc/postfix/main.cf/etc/mailname、そのものは、あまりにも、編集する必要があります。
マークプロトニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.