hostnamectl
简介
hostnamectl命令是 systemd 生态系统的一部分,因此它主要适用于使用了 systemd 作为初始化系统(init system)的 Linux 发行版。
适用范围(使用 systemd 的发行版)
| 发行版 | 备注 |
|---|---|
| RHEL / CentOS / Rocky Linux / AlmaLinux | 从 RHEL/CentOS 7 及更高版本开始默认包含。 |
| Fedora | 从 Fedora 15 之后版本默认包含。 |
| openSUSE | 从 openSUSE 12.1 及更高版本默认包含。 |
| Debian | 从 Debian 8 “Jessie” 及更高版本默认包含。 |
| Ubuntu | 从 Ubuntu 15.04 及更高版本默认包含。 |
| Arch Linux | 很早就已采用 systemd,默认包含。 |
| Linux Mint | 基于 Ubuntu/Debian,适用情况同其上游。 |
| Manjaro | 基于 Arch Linux,适用。 |
常用操作
查看当前主机名信息
bash
hostnamectl status
# 或
hostnamectl1
2
3
2
3
设置静态主机名
bash
sudo hostnamectl set-hostname <新主机名>1
效果:
- 命令会立即更新运行中的系统主机名。
- 同时自动将新主机名写入
/etc/hostname文件。 - 通常无需重启,新会话或进程会立即看到新主机名。
- 修改后,当前终端可能仍显示旧主机名,因为 $PS1提示符可能已被缓存。新开的终端或执行 bash命令即可更新。
💡提示
强烈建议执行 set-hostname后,编辑 /etc/hosts
将 127.0.0.1 和 ::1 对应的条目改为新的主机名,以避免某些服务(如 localhost解析)出现问题。
/etc/hosts
bash
127.0.0.1 localhost new-hostname
::1 localhost new-hostname1
2
2