CentOS 6.x 永久修改主机名需同步修改 /etc/sysconfig/network(设 HOSTNAME=)和 /etc/hosts(绑定实际IP与主机名),缺一可致启动异常或解析错乱,修改后执行 hostname $(cat /etc/sysconfig/network | grep HOSTNAME= | cut -d= -f2) 立即生效。

修改 /etc/sysconfig/network 可以永久设置主机名,但需注意:它本身不参与 IP 配置,也不“锁定”主机名防标识错乱;真正起作用的是该文件中 HOSTNAME= 的声明,配合 /etc/hosts 的正确映射,才能让系统在 IP 变更后仍稳定识别自身身份。
确认系统版本适用性
/etc/sysconfig/network 是 CentOS 6、RHEL 6 及部分旧版 Linux(如某些定制化 CentOS 5/6 衍生系统)中用于持久化主机名的标准配置文件。CentOS 7+ 默认改用 /etc/hostname 和 hostnamectl,若强行在此类系统中修改 /etc/sysconfig/network,可能被忽略或与 systemd 冲突。操作前先执行:
-
cat /etc/redhat-release或cat /etc/os-release | grep VERSION_ID确认是 CentOS/RHEL 6.x -
ls /etc/hostname存在且内容与预期一致,说明系统已启用新机制,此时不应依赖/etc/sysconfig/network
正确编辑 /etc/sysconfig/network 设置 HOSTNAME
使用 root 权限编辑该文件:
vi /etc/sysconfig/network- 确保包含且仅有一行有效的
HOSTNAME=定义,例如:
HOSTNAME=web01.prod - 保留或添加
NETWORKING=yes(非必需但推荐) - 删除重复的
HOSTNAME=行,避免解析歧义
同步更新 /etc/hosts 实现 IP 与主机名可靠绑定
仅改 /etc/sysconfig/network 不足以防止 IP 变动后的标识错乱——关键在于让主机名能被本机稳定解析。必须在 /etc/hosts 中显式绑定当前(或规划中)的主 IP 与主机名:
- 打开
/etc/hosts:vi /etc/hosts - 找到对应本机实际 IP 的行(如
192.168.10.5),在其后追加主机名和短名:
192.168.10.5 web01.prod web01 - 不要仅依赖
127.0.0.1行,那只能用于本地回环解析,无法支撑服务发现、SSH 主机验证、集群通信等场景 - 若服务器有多个 IP(如管理网段 + 业务网段),建议至少将主业务 IP 绑定到主机名
验证与生效方式
完成上述两步后:
- 立即应用新主机名:
hostname $(cat /etc/sysconfig/network | grep HOSTNAME= | cut -d= -f2) - 检查是否生效:
hostname和uname -n应返回新名称 - 验证解析是否可靠:
ping -c1 web01.prod应命中你写入的业务 IP,而非 127.0.0.1 - 重启不是必须项;但若服务(如 Apache、Postfix)启动早于 hostname 加载,建议重启对应服务或整个系统以确保全量环境变量刷新

















