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


497

OSホスト名を変更したいが、再起動したくない。

編集し/etc/hostnameましたが、実装するには再起動が必要です。これを避ける方法は?


3
警告:起動時にホスト名を制御するデフォルトでcloud-initを実行しているUbuntu 18以降では動作しません。
nslntmnx

@nslntmnx、ありがとう!
MiB

回答:


642

それは簡単です。歯車アイコン(画面の右上隅にある)をクリックし、[このコンピューターについて]画面(歯車アイコンにある)を開き、[デバイス名]を編集します。

または、ターミナルで次のコマンドを使用します。

sudo hostname your-new-name

これにより、再起動するまでホスト名が新しい名前に設定されます。参照してくださいman hostnameどのように私は、コンピュータ名を変更できますか?詳細については。_あなたの名前で使用しないでください。

注意

再起動後、変更内容/etc/hostnameが使用されるため、(質問で述べたように)引き続き使用する必要があります

sudo -H gedit /etc/hostname

(または他のエディター)を使用して、ファイルにホスト名を含めます。

ファイルが正しく設定されていることをテストするには、次を実行します。

sudo service hostname start

また/etc/hosts、次の行を編集および変更する必要があります。

127.0.1.1     your-old-hostname

新しいホスト名が含まれるようになります。(そうしないと、多くのコマンドが機能しなくなります。)


4
私は再起動したいいけない
ディーパックラージプート

23
知っている。そのため、「hostname」コマンドを使用する必要があります。「hostname」コマンドは、restart / crash / etcまでホスト名のみを変更することを明確にしたかっただけです。その後、ファイルから名前を再度読み取ります。
ジャスペラード

5
依存します。コマンドを入力した場合、再起動する必要はありません。ホスト名はすでに変更されています。ただし、次回の再起動までのみです。
ジャスペラード

19
また、変更する必要があることに注意してください/etc/hosts(他の回答を参照)
JB。

9
けれども要するに、hostname即効性を取るために新しい名前を原因となります、あなたにも変更しない限り、「永続的」ではない/etc/hostname/etc/hosts、それらはもちろん、あなたができない場合があり、再起動またはクラッシュ、後に読み込まれますファイルがあるので、事前に期待しています。
ティムパレンティ

280

Ubuntu 13.04以降

このhostnamectlコマンドは、デスクトップ版とサーバー版の両方のデフォルトのインストールの一部です。

hostnameコマンドによるホスト名の設定と編集を組み合わせます/etc/hostname。静的ホスト名を設定するだけでなく、Ubuntuでは使用されない「きれいな」ホスト名を設定できます。残念ながら、編集は/etc/hostsまだ個別に行う必要があります。

hostnamectl set-hostname new-hostname

このコマンドは、の一部であるsystemd-services(Ubuntuの14.04のように、さらに含み、パッケージtimedatectllocalectlコマンド)。Ubuntuがに移行するにつれてsystemd、このツールは未来です。


1
これはどこでも利用できないことに注意してください。Ubuntu 14.04 LTS ARM-7のインストールを調べただけで、hostnamectl存在しません。Ubuntuのいくつかのフレーバーはまだsystemdを使用していないと思います。
ステファン

1
@Stéphaneコマンドはsystemdスイートの一部ですが、個別に使用できます。この場合、13.04-14.10はsystemdをinitとして使用しないでください。コマンドを使用できるためです。
ムル

1
@ H2ONaClシェル変数は起動時に設定され、別のシェルを開くだけでホスト名変数は問題ないはずです。sudoに関しては、ホスト名の解決に関するエラーが原因で実際​​に何もできないということはありません。
ムル

1
@ H2ONaClああ、しかし、HOSTNAME variablleは標準ではありません-IIRCダッシュとkshにはありません。zshはHOSTを使用するので、シェル変数が行く限り、ヒープの底になります。
ムル

3
Ubuntu 18.04 LTSでも引き続き動作します。
LucaM

63

再起動なし

再起動せずにubuntuのホスト名またはコンピューター名を変更する

/ etc / hostnameを編集して、新しい値に変更します。

nano /etc/hostname 

/ etc / hostsを編集し、古い127.0.1.1行を新しいホスト名に変更します

127.0.0.1   localhost
127.0.1.1   ubuntu.local    ubuntu   # change to your new hostname/fqdn

:私はフォーラムでそれを読んだ> / etc / hostsを編集し、古い127.0.1.1行を新しいホスト名に変更します(これをしないと、sudoを使用できなくなります。すでに実行している場合、grubメニューでEscを押し、リカバリを選択し、ホストファイルを正しい設定に編集します)

再起動後、ホスト名は選択した新しいホスト名になります

再起動なし

再起動せずに変更するには、 / etc / hostnameを編集した後にhostname.shを使用するだけです。以下のコマンドを実行するまで、両方のホスト名を/ etc / hosts(127.0.0.1 newhost oldhost)に保持する必要があります。

sudo service hostname start

:上記のコマンドは、変更をアクティブにします。このファイル(/ etc / hostname)に保存されているホスト名は、システムの再起動時に保持されます(同じサービスを使用して設定されます)。


Ubuntu 12.10では、最後の部分が次のエラーメッセージで機能しませんsudo: unable to resolve host old-hostname。その部分では、@ jesperadoソリューションがうまく機能します。
フレデリックグロシャン

3
更新しないと/etc/hostswコマンド、Apache など、12.04.2 LTSで問題が発生し始め/sbin/rebootます。必ず更新してください/etc/hosts
ジョシュ

カスタムホスト名との両方127.0.0.1を参照します。右?次に、回答の終わりに向かって、リボットなしのアクションについて、を参照します。だから、アドレスの必要はありませんか?localhost127.0.1.1/etc/hosts127.0.0.1 newhost oldhost127.0.1.1
ニコスアレクサン

1
うまくいかなかった。sudo nano /etc/hosts変更を有効にするために使用する必要がありました。sudoなしでnano /etc/hostsは、変更を保存しませんでした
conman253

2
再起動と再起動の違いは何ですか?
ストーム

43

デフォルト名は、Ubuntuのインストール時に設定されました。ホストとホスト名のファイルを編集することで、デスクトップとサーバーの両方で簡単に変更できます。以下がその方法です。

  1. CtrlAlttキーボードを押して端末を開きます。開いたら、次のコマンドを実行します。sudo hostname NEW_NAME_HERE

これにより、次回の再起動までホスト名が変更されます。変更は、現在の端末にすぐには表示されません。新しい端末を起動して、新しいホスト名を確認します。

  1. 名前を永続的に変更するには、コマンドを実行してホストファイルを編集します。

    sudo -H gedit /etc/hostname そして sudo -H gedit /etc/hosts

GUIなしのUbuntuのサーバの場合は、実行sudo vi /etc/hostnameしてsudo vi /etc/hosts、それらを一つずつを編集します。両方のファイルで、名前を必要な名前に変更して保存します。

最後に、コンピューターを再起動して変更を適用します。


16

所定の方法でホスト名を変更するスクリプトを次に示します。これにより、sudoX11アプリケーションだけでなく、再起動も必要なく機能し続けることが保証されます。

使用法: sudo ./change_hostname.sh new-hostname

#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"

スクリプトの最後の行は何をしsu $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"ますか?ちょっと興味があるんだけど。
Fr0zenFyr 14年

4
@ Fr0zenFyr:有効なX11認証トークン(xauth list)を受け取り、古いホスト名を新しいホスト名(sed)に置き換えます。次にawk、の入力形式と出力形式が対称ではないxauth addため、最初の引数を引用符でxauth囲みます。
ルーカス14年

説明ありがとう。変更を有効にするために、常に再起動していました。+1
Fr0zenFyr 14年

@trakz:IETF RFCによると、実際は127.abcの数値はすべてlocalhostです。(ほとんどの人はこれを知らないだけですが、ほとんどの人が知らないように、編集が承認されました)
-Fabby

14

再起動なし:

  1. ホスト名を変更 /etc/hostname
  2. /etc/hostsそれに応じて更新する
  3. sudo sysctl kernel.hostname=mynew.local.host

現在のホスト名を確認してください hostname -f


16.04、sysctlをしてsudo: unable to resolve host oldnamesysctl: setting key "kernel.hostname": Read-only file system。たぶんProxmox内のCTです。
パブロA

14

Cloud-init(Ubuntu 18+)ホスト名の永続性

上記のアプローチ(hostnamectletc/hostnameなど)は、ホスト名の設定を制御できるcloud-initの出現により、ホスト名を即座に変更するために機能しますが、他にも多くのことを行っています。そのため、cloud-initがインストールされている場合、再起動後に保持されません。再起動後も変更を維持したい場合は、cloud-init構成ファイルを編集し、cloud-initのホスト名設定/更新モジュールを無効にする必要があります

sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg

またはcloud-initを完全に無効にします:

sudo touch /etc/cloud/cloud-init.disabled

1
この回答に賛成票を投じてください。これは私にとってはうまくいきました。他の答えは、cloud-initの採用では機能しません。
nslntmnx

@nslntmnxはデフォルトで18.04デスクトップにインストールされますが、サーバーのみですか?デスクトップにはがありません/etc/cloud/cloud.cfg。パッケージ名は何ですか?ただcloud-init
Ciro Santilli新疆改造中心法轮功六四事件

1
また、オーバーライドを無効にするだけでなく、cloud-initでホスト名を変更する方法はありますか?
Ciro Santilli新疆改造中心法轮功六四事件

1
はい、あなたは、クラウドのinitを使用して多くの設定を変更することができます-ドキュメントが私の答えにリンクをご覧-こちらのホスト名を設定へのリンクです:cloudinit.readthedocs.io/en/latest/topics/...
Pierz

7

現在のホスト名を取得するには:

cat /etc/hostname

これは、任意のテキストエディターで変更できます。また、/ etc / hostsの127.0.0.1に対してlocalhost以外のエントリを更新する必要があります。


1
または、コマンドラインからコマンド「hostname」を実行します。
elomage

4
  1. の内容を/etc/hostname目的のホスト名に置き換えます(で編集できますsudo nano /etc/hostname
  2. /etc/hosts、127.0の横のエントリを置き換えます。希望のホスト名を含む1 .1(で編集できますsudo nano /etc/hosts
  3. 実行する sudo service hostname restart; sudo service networking restart

警告:起動時にホスト名を制御するデフォルトでcloud-initを実行しているUbuntu 18以降では動作しません。
nslntmnx

@nslntmnxこれについて本当に確信していますか?cloud-config.txt # if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.には、現在Ubuntu 18がないため、週末までテストできません。
ジョージ

4

Ubuntu 16.04

これは、再起動や端末の使用なしです。

  • [システム設定]-> [詳細]に移動します
  • そこにそれがある。[ デバイス名]の横にテキストボックスがあります。
  • テキストボックスを編集してウィンドウを閉じます。

ターミナルを開きます。自分で見てください。

(古いバージョンの場合、テキストボックスは編集できません。)


4

元の投稿者の質問に対する古典的な答えは、編集した/etc/hostname後、rootとして()オプションを指定してhostname(1)を実行することにより、再起動せずに適用することです。-F--file

sudo hostname -F /etc/hostname

ホスト名は、(5)での取り扱い/etc/hostnameと言ったプログラムは現在、20年以上にわたってDebianとその誘導体で同じとなっている、とパッケージは、それが提供してタグ付けされてい不可欠必要な、とIIRCは、initスクリプトは文字通りのために同じことを使用しています何十年も(/etc/init/hostname.confまだそれを含んでいます)、だから私は本当に誰もこれをすでに言及していないことを本当に困惑していると言わなければなりません:)


警告:起動時にホスト名を制御するデフォルトでcloud-initを実行しているUbuntu 18以降では動作しません。
nslntmnx

@nslntmnx erm、何?Ubuntu 18はデフォルトでcloud-initを取り込むためにどのような新しい依存関係を導入しましたか?クラウドに合わせたイメージを考えているかもしれませんが、その場合、カスタムクラウドプロビジョニングツールを実行しても驚くことではありません。
ジョシップロダン

3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

それは私が思う仕事をする必要があります


5
私は、これは、再起動後も存続しますとは思わない
コリン・アンダーソン

警告:起動時にホスト名を制御するデフォルトでcloud-initを実行しているUbuntu 18以降では動作しません。
nslntmnx

3

私は答えを読みましたが、おそらくあなたはこれを探していると思います:

/etc/hostnameファイルを編集した後、これらの2つのコマンドを実行するだけです。

$ sudo service hostname restart
$ exec bash

それで全部です。再起動する必要はありません/etc/hosts。ファイル内の名前も必ず変更してください。


他の多くの回答とは異なり、これは更新/etc/hostsされません(14.04で確認しました)。
IsaacS

警告:起動時にホスト名を制御するデフォルトでcloud-initを実行しているUbuntu 18以降では動作しません。
nslntmnx

2

Ubuntu 16.04

DigitalOcean Comunityからの回答に基づくソリューション。

ホストファイルを編集ます。

$ sudo nano /etc/hosts

古い名前を新しい名前に置き換えます。

127.0.0.1 localhost newname

新しいホスト名をセットアップします。

$ sudo hostnamectl set-hostname newname


警告:起動時にホスト名を制御するデフォルトでcloud-initを実行しているUbuntu 18以降では動作しません。
nslntmnx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.