主机名是在操作系统安装期间设置的,或在创建虚拟机时动态分配给虚拟机的。
本指南介绍了如何在Ubuntu 20.04上设置或更改主机名,而无需重新启动系统。
了解主机名
主机名是用于标识网络上设备的标签。 您不应在同一网络上拥有两台或更多具有相同主机名的计算机。
在Ubuntu中,您可以使用hostnamectl
命令编辑系统主机名和相关设置。 该命令可识别三种不同的主机名类别:
static
-传统的主机名。 它存储在/etc/hostname
文件中,并且可以由用户设置。pretty
-用于向用户展示的描述性自由格式UTF8主机名。 例如myfreax's laptop
。transient
-由内核维护的动态主机名。 DHCP或mDNS服务器可以在运行时更改临时主机名。 默认情况下,它与static
主机名相同。
建议对static
和transient
名称使用完全限定的域名 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安装上更改主机名。
出于多种原因,您可能需要更改主机名。 最常见的是在创建实例后自动设置主机名的情况。
如有任何疑问,请随时发表评论。