hostnamectl set-hostname 是 systemd 系统唯一可靠方式,需同步更新 /etc/hostname、内核 UTS namespace 和 /etc/hosts;旧系统(如 CentOS 6)须改 /etc/sysconfig/network;hostname 命令仅临时生效。

直接改 /etc/hostname 文件或只运行 hostname 命令,都不能让主机名真正永久生效——必须同步更新内核状态、静态配置和本地解析三者,缺一不可。
用 hostnamectl set-hostname 修改(systemd 系统唯一可靠方式)
Ubuntu 16.04+、CentOS 7+、Debian 9+ 等基于 systemd 的系统,hostnamectl set-hostname 是唯一推荐的入口。它会原子化完成:/etc/hostname 写入 + 内核 UTS namespace 更新 + systemd-hostnamed 服务通知。
- 执行
sudo hostnamectl set-hostname web-prod-01(主机名只能含小写字母、数字、连字符,不能以点或下划线开头) - 验证是否写入配置:
cat /etc/hostname应输出单行无空格的web-prod-01 - 确认内核已加载:
hostnamectl status | grep "Static hostname"输出必须严格匹配 - ⚠️ 注意:
hostnamectl不动/etc/hosts,这步必须手动补,否则sudo会卡住、ssh localhost报错
必须手动同步更新 /etc/hosts 中的解析条目
几乎所有依赖本地名称解析的服务(sudo、sshd、zabbix-agent、systemd-logind)都会调用 gethostname() 后查 /etc/hosts。若找不到对应映射,就会 fallback 到 DNS 或直接失败。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- Debian/Ubuntu 默认使用
127.0.1.1 old-hostname行,只替换其中的主机名部分,保留127.0.1.1不变 - RHEL/CentOS 7+ 默认不写该行,但建议显式添加
127.0.0.1 web-prod-01(不能删掉原有的127.0.0.1 localhost) - IPv6 用户需同步检查并更新
::1行,例如:::1 web-prod-01 localhost - 验证解析是否生效:
getent hosts web-prod-01应返回对应 IP 行
旧系统(CentOS 6 / SysVinit)必须改 /etc/sysconfig/network
这类系统启动时由网络初始化脚本读取 /etc/sysconfig/network 中的 HOSTNAME= 变量。跳过这步,重启后主机名必然回退到旧值,哪怕 /etc/hostname 已改。
- 编辑文件:
sudo nano /etc/sysconfig/network - 确保存在且格式正确的一行:
HOSTNAME=web-prod-01(等号前后无空格) - 同时确认该文件中启用网络:
NETWORKING=yes - 该系统通常不依赖
hostnamectl,所以不要指望它起作用
别碰 hostname 命令做永久修改
hostname web-prod-01 只改内核 transient 名字空间,是纯运行时操作,不写任何文件。重启即丢,且多数服务(如 sshd、python -c "import socket; print(socket.getfqdn())")在启动时已缓存原始值,不会自动刷新。
- 常见误判现象:
hostname命令输出变了,但ps aux | grep old-hostname仍能匹配进程名 - 临时调试可用:
sudo hostnamectl set-hostname --transient temp-name - 真要改静态名,永远以
/etc/hostname或hostnamectl set-hostname为准,而不是靠hostname命令“凑合”
最容易被忽略的是:不同发行版对 /etc/hosts 的默认写法不一致,而 hostnamectl 完全不管这个文件。很多人卡在 sudo: unable to resolve host web-prod-01 却反复检查 /etc/hostname,其实问题根本不在那里。

















