Linux改主机名需分两步:临时生效用sudo hostname new-hostname,永久生效须修改/etc/hostname并执行sudo hostnamectl set-hostname new-hostname,否则重启回退或服务异常。
Linux 修改主机名必须分两步:临时生效用 hostname 命令,永久生效得改系统配置文件——只改一个,重启后就回退。
临时改 hostname(立即生效但重启丢失)
适合调试、测试或临时切换环境,不写入磁盘:
- 运行
sudo hostname new-hostname即可立即变更,当前 shell 会话里hostname命令返回新值 - 注意:普通用户无权限,必须加
sudo;该操作不影响任何配置文件 - 验证是否生效:执行
hostname或hostnamectl查看输出
永久改 hostname(需修改配置文件 + 刷新 systemd)
不同发行版写法略有差异,但核心是更新 /etc/hostname 并通知系统服务,否则 hostnamectl 显示旧名、SSH 提示符也不更新:
- 编辑
/etc/hostname,把里面的内容替换成新主机名(不要带空格或特殊字符) - 运行
sudo hostnamectl set-hostname new-hostname—— 这条命令会自动更新/etc/hostname,并刷新systemd-hostnamed服务状态 - 检查
/etc/hosts中是否包含对应行(如127.0.1.1 new-hostname),否则某些服务(如 Java 应用、Postfix)启动时可能解析失败
为什么改了 /etc/hostname 还不生效?
常见于 Ubuntu/Debian 系统,systemd 默认启用 systemd-hostnamed 服务,它会缓存主机名并优先读取其内部状态: