主机名是在操作系统安装期间设置的,或在创建虚拟机时动态分配给虚拟机的。

本指南介绍了如何在Ubuntu 20.04上设置或更改主机名,而无需重新启动系统。

了解主机名

主机名是用于标识网络上设备的标签。 您不应在同一网络上拥有两台或更多具有相同主机名的计算机。

在Ubuntu中,您可以使用hostnamectl命令编辑系统主机名和相关设置。 该命令可识别三种不同的主机名类别:

  • static-传统的主机名。 它存储在/etc/hostname文件中,并且可以由用户设置。
  • pretty -用于向用户展示的描述性自由格式UTF8主机名。 例如myfreax's laptop
  • transient -由内核维护的动态主机名。 DHCP或mDNS服务器可以在运行时更改临时主机名。 默认情况下,它与static主机名相同。

建议对statictransient名称使用完全限定的域名 FQDN 例如host.example.com

只有具有root用户或具有sudo特权的用户才能更改系统主机名。

显示当前主机名

要查看当前主机名,请调用不带任何参数的hostnamectl命令:

hostnamectl

在此示例中,当前主机名设置为ubuntu2004.localdomain

更改系统主机名

更改系统主机名是一个简单的过程。 语法如下:

sudo hostnamectl set-hostname host.example.com

例如,要将系统静态主机名更改为neptune.myfreax.com,可以使用以下命令:

sudo hostnamectl set-hostname neptune.myfreax.com

您也可以选择设置pretty的主机名:

sudo hostnamectl set-hostname "Myfreax's laptop" --pretty

hostnamectl不产生输出。 成功时,返回0,否则返回非零失败代码。

静态主机名存储在/etc/hostname中,pretty主机名存储在/etc/machine-info文件中。

您不应在同一网络的两台不同计算机上使用相同的主机名。

在大多数系统上,主机名映射到/etc/hosts中的127.0.0.1。 打开文件,将旧的主机名更改为新的主机名。  

/etc/hosts

127.0.0.1   localhost
127.0.0.1   neptune.myfreax.com

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

如果您正在云实例上运行Ubuntu,并且已安装cloud-init软件包,则还需要编辑/etc/cloud/cloud.cfg文件。 通常,默认情况下,此软件包安装在云提供商提供的映像中,并且用于处理云实例的初始化。

如果您的系统上存在该文件,请打开它:

sudo vim /etc/cloud/cloud.cfg

在文件中搜索preserve_hostname,并将值从false更改为true

/etc/cloud/cloud.cfg

# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true

保存文件并关闭编辑器。

验证更改

要验证主机名是否已完全更改,请输入hostnamectl命令:

hostnamectl

您的新主机名将显示在终端上:

   Static hostname: neptune.myfreax.com
   Pretty hostname: Linuxize's desktop
         Icon name: computer-vm
           Chassis: vm
        Machine ID: a04e3543f3da460294926b7c41e87a0d
           Boot ID: aa31b274703440dfb622ef2bd84c52cb
    Virtualization: oracle
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-26-generic
      Architecture: x86-64

结论

我们向您展示了如何在不重新启动计算机的情况下轻松地在Ubuntu 20.04安装上更改主机名。

出于多种原因,您可能需要更改主机名。 最常见的是在创建实例后自动设置主机名的情况。

如有任何疑问,请随时发表评论。