首页/系统/Linux 运维命令速查/hostname 主机名管理
网络命令82 条

hostname 主机名管理

查看/临时设置主机名;永久改名用 hostnamectl set-hostname,改完记得核对 /etc/hosts 与 ansible/监控的命名依赖。

Linux 运维命令速查系统更新于 2026-10-13

主机名不只是显示名称

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 与静态名不一致

三类主机名

类型来源是否持久
statichostnamectl 设置或 /etc/hostname持久,是系统的正式名称
transient内核运行时,如 DHCP 下发或 hostname 命令临时设置重启后丢失或被覆盖
pretty供展示的说明性名称会保存,但不作为技术标识使用
FQDN由 /etc/hosts 与 DNS 解析共同决定hostname -f 的结果与 static 名不一定是同一件事
直接执行 hostname 改名只对当前运行期有效,重启就会还原。要持久必须用 hostnamectl 或写入 /etc/hostname,并同步 /etc/hosts 里对应的解析条目。
改主机名会影响读取主机名的应用:证书签发与校验、监控与日志标签、集群成员列表,以及 PostgreSQL 等启动时读取主机名的服务。生产环境请在维护窗口改名,并重启受影响的服务。
命名规范建议:静态名用小写短名并对应资产编号(如 web-01),让 FQDN 与内网 DNS 保持一致;改名后按影响面清单逐项核对。批量改名用配置管理工具下发,比逐台手敲可靠。

易错点

  • 用 hostname 命令改名以为永久生效:重启即还原,后续排查结论会被误导
  • 多机撞名:监控与集中日志无法区分来源,定位问题的时间成倍增加
  • 改名后不同步 /etc/hosts:FQDN 解析失败,依赖它的服务启动异常
  • 改完不重启相关服务:已在运行的进程仍持有旧主机名,状态与配置看起来互相矛盾

数据来源与参考

  • man 1 hostname(net-tools 手册)
  • man 1 hostnamectl(systemd 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌