当前位置: 首页>>技术问答>>正文


如何在不重启的情况下更改主机名?

, ,

问题描述

我想更改操作系统主机名,但我不想重新启动。

我编辑了/etc/hostname,但它需要重新启动才能实现。如何避免这种情况?

最佳解决方法

这很容易。只需点击齿轮图标(位于屏幕右上角),打开“关于此计算机”屏幕(位于齿轮图标)并编辑”Device name”。

或者,在终端中,使用以下命令:

sudo hostname your-new-name

这会将主机名设置为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

以便它现在包含您的新主机名。 (这是必需的,否则许多命令将停止运行。)

次佳解决方法

Ubuntu 13.04起

hostnamectl命令是Desktop和Server版本上默认安装的一部分。

它结合了通过hostname命令设置主机名和编辑/etc/hostname。除了设置静态主机名,它还可以设置”pretty”主机名,这在Ubuntu中不使用。不幸的是,编辑/etc/hosts仍然需要单独完成。

hostnamectl set-hostname new-hostname

该命令是systemd-services程序包(自Ubuntu 14.04起,还包括timedatectllocalectl命令)的一部分。随着Ubuntu迁移到systemd,这个工具是未来。

第三种解决方法

没有重新启动

在不重新启动的情况下更改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时设置的。您可以轻松将其更改为Desktop&服务器通过编辑主机和主机名文件。以下是如何:

  1. 按键盘上的Ctrl Alt t打开终端。打开时,运行以下命令:sudo hostname NEW_NAME_HERE

这将改变主机名直到下一次重新启动。在您当前的终端中,更改不会立即显示。启动一个新终端来查看新的主机名。

  1. 要永久更改名称,请运行命令以编辑主机文件:sudo -H gedit /etc/hostnamesudo -H gedit /etc/hosts

对于没有GUI的Ubuntu服务器,运行sudo vi /etc/hostnamesudo vi /etc/hosts并逐一编辑它们。在这两个文件中,将名称更改为所需并保存。

最后,重新启动计算机以应用更改。

第五种方法

这是一个以规定的方式改变主机名的脚本。它确保不仅sudo而且X11应用程序继续运行,不需要重新启动。

用法: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}')"

第六种方法

不重新启动:

  1. 更改/etc/hostname中的主机名

  2. 相应地更新/etc/hosts

  3. sudo sysctl kernel.hostname=mynew.local.host

hostname -f检查当前的主机名

第七种方法

要获取当前的主机名:

cat /etc/hostname

这可以在任何文本编辑器中进行更改。您还需要在/etc /hosts中针对127.0.0.1更新localhost以外的条目。

第八种方法

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

这应该做我认为的工作

第九种方法

  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

第十种方法

我已阅读答案,但我想可能你正在寻找这个:

编辑/etc/hostname文件后,只需执行这两个命令即可。

$ sudo service hostname restart
$ exec bash

就这样。不需要重新启动。同时请确保您也更改/etc/hosts文件中的名称。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/55.html,未经允许,请勿转载。