使用 hostnamectl set-hostname 可一键修改主机名并同步内核静态主机名及 /etc/hostname,但需手动更新 /etc/hosts 中对应条目,确保 hostname、/etc/hostname 和 /etc/hosts 三者一致方可正常解析。

直接用 hostnamectl set-hostname 就能完成主机名修改并同步内核参数,这是 systemd 系统的标准做法,无需手动改内核变量。
执行 hostnamectl 命令设置新主机名
以 root 或 sudo 权限运行以下命令(将 your-new-hostname 替换为实际名称):
- sudo hostnamectl set-hostname your-new-hostname
该命令会自动做三件事:写入新名称到 /etc/hostname、更新内核的 static hostname、通知 systemd-hostnamed 服务刷新状态。执行后,多数服务(如 ssh、systemd 服务单元)可立即识别新名,不需重启系统。
验证内核参数是否已同步
hostnamectl 本身已确保内核静态主机名与配置文件一致。你可以通过以下方式确认:
- 运行 hostnamectl status,查看 “Static hostname” 行是否为你设置的名称
- 运行 cat /proc/sys/kernel/hostname,输出应与新主机名完全相同
- 运行 hostname,结果也应匹配(它默认读取内核当前 hostname)
必须同步更新 /etc/hosts
hostnamectl 不动 /etc/hosts,但很多程序(如 sudo、ssh、zabbix-agent)依赖它做本地解析。若忽略这步,会出现 “Could not resolve hostname” 报错。
- 用 sudo nano /etc/hosts 打开文件
- 找到含旧主机名的行,常见格式是:127.0.1.1 old-hostname 或 127.0.0.1 old-hostname
- 把 old-hostname 完整替换成新主机名,例如改为:127.0.1.1 your-new-hostname
- 保留原始的 127.0.0.1 localhost 行不变
检查三项是否统一
修改完成后,快速验证三个关键位置是否一致:
- hostname —— 显示当前运行时主机名(应为新名)
- cat /etc/hostname —— 查看持久化配置(应为新名)
- grep "$(hostname)" /etc/hosts —— 确认 hosts 中存在对应映射行
三项全部匹配,说明主机名已正确修改并生效。不复杂但容易忽略。关键在于三处同步:内核参数、配置文件、本地解析表。


















