主机名不只是显示名称
hostname 查看当前主机名,也能临时设置;永久改名要用 hostnamectl set-hostname(systemd 系统)或写入 /etc/hostname。它影响的远不止提示符:证书 CN、监控标签、集中日志来源、Ansible 清单与集群成员标识都可能依赖主机名。多机环境里一旦撞名,日志与监控会彻底混淆,排查成本成倍上升。
基本信息
| 适用平台 | Linux 与多数类 Unix |
|---|---|
| 临时设置 | hostname 新名称(重启后还原) |
| 永久设置 | hostnamectl set-hostname 新名称(systemd);或写入 /etc/hostname |
| 常用选项 | -I 全部 IP、-f FQDN、-s 短名 |
| 相关文件 | /etc/hostname、/etc/hosts |
| 相关命令 | hostnamectl status(区分 static/transient/pretty) |
典型使用场景
- 新机上架或由镜像克隆后改名,避免与模板机同名
- 排查 FQDN 解析不对(证书校验或服务启动失败)
- 集中日志与监控上线前统一命名规范
- 部署对主机名敏感的组件(证书、集群成员、数据库)前对齐命名
- 云主机自动命名后做统一整改
常用示例
常用示例
hostname # 当前主机名
hostname -I # 本机全部 IP(可与 ip -br addr 交叉验证)
hostname -f # FQDN,依赖 DNS 或 /etc/hosts 中的解析
hostname -s # 短名(第一个点之前的部分)
sudo hostnamectl set-hostname web01 # systemd 系统永久改名
hostnamectl status # 查看 static / transient / pretty 三类名称
sudo bash -c 'echo web01 > /etc/hostname' # 非 systemd 环境的手工方式
grep -n web01 /etc/hosts # 同步本机解析,避免 FQDN 与静态名不一致三类主机名
| 类型 | 来源 | 是否持久 |
|---|---|---|
| static | hostnamectl 设置或 /etc/hostname | 持久,是系统的正式名称 |
| transient | 内核运行时,如 DHCP 下发或 hostname 命令临时设置 | 重启后丢失或被覆盖 |
| pretty | 供展示的说明性名称 | 会保存,但不作为技术标识使用 |
| FQDN | 由 /etc/hosts 与 DNS 解析共同决定 | hostname -f 的结果与 static 名不一定是同一件事 |
直接执行 hostname 改名只对当前运行期有效,重启就会还原。要持久必须用 hostnamectl 或写入 /etc/hostname,并同步 /etc/hosts 里对应的解析条目。
改主机名会影响读取主机名的应用:证书签发与校验、监控与日志标签、集群成员列表,以及 PostgreSQL 等启动时读取主机名的服务。生产环境请在维护窗口改名,并重启受影响的服务。
命名规范建议:静态名用小写短名并对应资产编号(如 web-01),让 FQDN 与内网 DNS 保持一致;改名后按影响面清单逐项核对。批量改名用配置管理工具下发,比逐台手敲可靠。