本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
设置有意义且可识别的主机名,有助于简化管理和维护工作,并增强系统的安全性(例如,基于主机名的访问控制规则)。本文介绍了设置主机名的常见命令hostname和hostnamectl,以及作为网络管理服务的NetworkManager如何管理和设置主机名。
使用限制
操作系统:Alibaba Cloud Linux 3。
hostname查询和设置临时主机名
通过hostname命令设置的主机名在系统重启后将失效。为实现主机名的永久化,可以通过修改/etc/hostname文件来进行设置。
hostname命令查询主机名。
hostnamehostname命令设置主机名。
以设置主机名为
alinux-dev-test为例。sudo hostname alinux-dev-test
hostnamectl查询和设置主机名
hostnamectl是一个与用户交互的前端工具,用于设置或显示主机名及相关信息,并通过调用systemd-hostnamed服务来实现这些更改。systemd-hostnamed则是在后台执行实际主机名管理工作的服务组件。
hostnamectl查询主机名。# 查询静态主机名 hostnamectl --static # 查询临时主机名 hostnamectl --transient结果如下图所示。

hostnamectl设置主机名。设置主机名。
以设置主机名为
alinux-dev-test为例。sudo hostnamectl set-hostname alinux-dev-test查看设置后的静态主机名和临时主机名。
hostnamectl --static hostnamectl --transient结果如下图所示,
hostnamectl默认同时设置静态主机名和临时主机名。
查看
/etc/hostname文件。cat /etc/hostname结果如下图所示,
/etc/hostname文件中也保存最新的静态主机名。
(重要)NetworkManager管理和设置主机名
NetworkManager在配置网络连接时会处理与网络接口相关的主机名设置。当通过NetworkManager修改网络连接的设置时,NetworkManager将通过dbus接口通知systemd-hostnamed进行主机名的更改。
NetworkManager通过在NetworkManager.conf文件中将hostname-mode参数值设置为default或dhcp来管理和设置临时主机名。hostname-mode的具体参数说明如下:
参数值 | 参数说明 |
default | 默认值。
|
dhcp |
|
none | NetworkManager不会管理和设置临时主机名。 |
使用示例
如需自行设置主机名,为避免与NetworkManager的主机名管理机制发生冲突,可以通过以下几种方式进行设置。
(推荐)通过hostnamectl设置静态主机名。以设置主机名为alinux-dev-test为例。
sudo hostnamectl set-hostname alinux-dev-test配置
hostname-mode=none设置NetworkManager不管理主机名。打开
/etc/NetworkManager/NetworkManager.conf文件。sudo vim /etc/NetworkManager/NetworkManager.conf按
i键进入编辑模式,在[main]下面添加以下内容。hostname-mode=none按
Esc键,输入:wq后按Enter键,保存配置。重启NetworkManager使配置生效。
sudo systemctl restart NetworkManager
通过自定义
systemd服务设置主机名。在自定义
systemd服务的service文件中添加以下配置,以确保其在NetworkManager服务之前启动。[Unit] Before=NetworkManager.service