hostnamectl 管理主机名
hostnamectl 是 systemd 提供的主机名管理入口。它把主机名分成静态、瞬态与面向用户的展示名三类,并负责让运行时状态与配置文件保持一致;同时它还能一屏显示操作系统、内核、虚拟化类型与硬件信息。相比手工改配置文件再执行主机名命令,用它可避免改了这里忘了那里的情况。
基本信息
| 适用平台 | systemd 发行版 |
|---|---|
| 语法 | hostnamectl [set-hostname 名称] |
| 相关文件 | /etc/hostname(静态名)、/etc/hosts(本地解析) |
| 权限要求 | 查看不需要特权,修改需要相应权限 |
典型使用场景
- 新机器初始化时统一命名并核对系统信息
- 迁移后主机名不匹配,需要同步更新静态与运行态名称
- 核对虚拟化类型与内核版本,辅助判断性能与兼容问题
- 排查本机解析异常,确认本地静态条目是否补齐
- 批量巡检时收集操作系统与硬件基本信息
查看与修改
查看与修改
hostnamectl # 一屏显示主机名、系统、内核与虚拟化信息
hostnamectl status # 同上,语义更明确
sudo hostnamectl set-hostname web01.example.com # 修改静态主机名
hostname # 确认运行态名称已同步
cat /etc/hostname # 确认静态配置文件已写入
grep -q web01 /etc/hosts || echo '127.0.0.1 web01.example.com web01' | sudo tee -a /etc/hosts # 补齐本地解析输出逐项读法
| 输出项 | 含义 | 关注点 |
|---|---|---|
| 静态主机名 | 写入配置文件、重启后保持的名称 | 运维脚本通常以它为准 |
| 瞬态主机名 | 运行期临时名称 | 与静态名不一致常见于动态分配环境 |
| 展示名 | 面向用户的可读名称 | 可含空格与说明文字,不用于解析 |
| 操作系统与内核 | 发行版与内核版本 | 排查兼容性与内核参数前先确认 |
| 虚拟化类型 | 物理机或虚拟化平台类型 | 影响性能基线与驱动行为判断 |
| 机器标识与启动标识 | 系统唯一标识 | 克隆虚拟机后标识重复会引发问题 |
改主机名后依赖它的服务需要同步更新,例如邮件、集群成员表、监控上报与证书;有配置管理平台的环境应通过平台统一修改。
修改后的检查
- 确认运行态与静态名一致,避免重启后回退
- 确认本地解析文件里有对应条目,减少自解析问题
- 确认监控与日志上报中的名称已更新
- 确认集群或依赖主机名的服务能正常识别本节点
- 把命名规范与变更记录登记到资产清单
克隆虚拟机会连机器标识一起复制,导致集群内标识重复;克隆后需要重新生成标识并改名,而不是只改主机名。