sudo hostname 新主机名
;永久修改需编辑 /etc/hostname
文件并更新 /etc/hosts
,然后重启系统生效,推荐使用 sudo hostnamectl set-hostname 新主机名
命令一步完成永久修改。临时修改主机名(重启失效)
适用于临时测试,使用hostnamectl
或hostname
命令:
# 方法1:hostnamectl(推荐) sudo hostnamectl set-hostname new-hostname # 方法2:传统命令 sudo hostname new-hostname
验证:
hostname # 显示 new-hostname
永久修改主机名(所有主流发行版)
使用 hostnamectl
(Systemd系统通用)
sudo hostnamectl set-hostname new-hostname
- 生效:立即生效且永久保留,无需重启。
手动修改配置文件
不同发行版配置文件路径:
- Debian/Ubuntu:
sudo nano /etc/hostname # 仅保留新主机名
- CentOS/RHEL/Fedora:
sudo nano /etc/hostname # 仅保留新主机名
同步更新 /etc/hosts
文件
关键步骤:避免本地解析错误(如sudo报错、服务启动失败)
编辑hosts文件:
sudo nano /etc/hosts
将原主机名替换为新主机名,
0.0.1 localhost 127.0.1.1 new-hostname # 修改此处!
验证修改结果
hostnamectl status # 查看静态主机名(Static hostname) hostname # 检查当前生效的主机名 cat /etc/hostname # 确认配置文件
针对旧版系统的特殊处理
SysVinit系统(无Systemd)
# 修改/etc/sysconfig/network(CentOS 6) sudo echo "HOSTNAME=new-hostname" > /etc/sysconfig/network # 重启生效 sudo reboot
NetworkManager管理的主机名
nmcli general hostname new-hostname # 设置并立即生效
注意事项
- 权限要求:所有命令需
sudo
或root权限。 - 命名规范:
- 仅使用字母、数字、连字符(),避免下划线和空格。
- 首尾字符必须为字母或数字。
- 服务依赖:
修改后重启关键服务(如网络服务、Docker容器):sudo systemctl restart systemd-hostnamed sudo systemctl restart NetworkManager # 若使用NetworkManager
- 云服务器限制:
AWS/Azure等云平台可能要求通过控制台修改,否则导致实例失联。
故障排查
- 主机名未更新:检查
/etc/hosts
是否包含旧主机名映射。 - sudo报错:
sudo: unable to resolve host new-hostname
原因:
/etc/hosts
中未正确绑定新主机名到0.1.1
或0.0.1
。
- 推荐方法:
sudo hostnamectl set-hostname
+ 更新/etc/hosts
。 - 生效逻辑:
graph LR A[hostnamectl] --> B[修改/etc/hostname] B --> C[通知systemd-hostnamed服务] C --> D[内核实时更新] D --> E[永久生效]
通过遵循上述步骤,可确保主机名安全变更,避免系统服务异常,企业环境中建议在维护窗口操作,并提前备份配置文件。
引用说明基于Linux内核文档(kernel.org)、Systemd官方手册(freedesktop.org)及主流发行版(Ubuntu/CentOS)的官方维护指南。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27204.html