当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

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

最佳答案

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

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

sudo hostname your-new-name

这会将主机名设置为 your-new-name,直到您重新启动。有关详细信息,请参阅 man hostnameHow do I change the computer name?。不要在您的名字中使用 _

笔记

重新启动后,将使用 /etc/hostname 中的更改,因此(如您在问题中所说),您仍应使用

sudo -H gedit /etc/hostname

(或其他一些编辑器)以便该文件包含主机名。

要测试文件是否设置正确,请运行:

sudo service hostname start

您还应该编辑 /etc/hosts 并更改以下行:

127.0.1.1     your-old-hostname

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

次佳答案

Ubuntu 13.04 以上版本

hostnamectl 命令是桌面版和服务器版默认安装的一部分。

它结合了通过 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 时设置的。您可以轻松地将它更改为您想要的任何桌面和应用程序。服务器通过编辑主机和主机名文件。以下是方法:

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

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

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

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

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

第五种答案

Cloud-init (Ubuntu 18+) 主机名持久性

虽然上述方法( hostnamectletc/hostname 等)适用于立即更改主机名,但随着 cloud-init 的出现——它可以控制主机名的设置——以及其他许多事情。因此,如果安装了 cloud-init,它在重启后不会卡住。如果您希望更改在重启后保留,那么您需要编辑 cloud-init config files ,禁用 cloud-init 的 hostname set/update module

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

或完全禁用 cloud-init:

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

第六种答案

这是一个以规定方式更改主机名的脚本。它确保不仅 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 以外的条目。

第九种答案

原始发布者问题的经典答案是,一旦您编辑了 /etc/hostname ,您就可以通过以根用户身份运行带有 -F ( --file ) 选项的 hostname(1) 使其在不重新启动的情况下应用:

sudo hostname -F /etc/hostname

hostname(5)/etc/hostname 的处理和上述程序在 Debian 及其衍生产品中已经使用了二十多年,the package providing it 被标记为 essentialrequired ,并且 IIRC 初始化脚本几十年来一直使用相同的东西( /etc/init/hostname.conf 仍然包含它), 所以我不得不说我真的很困惑怎么没人提到过这个:)

第十种答案

Ubuntu 16.04

基于 DigitalOcean 社区的 answer 的解决方案。

编辑主机文件。

$ sudo nano /etc/hosts

将旧名称替换为新名称。

127.0.0.1 localhost newname

设置新的主机名。

$ sudo hostnamectl set-hostname newname

参考资料

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