在银河麒麟操作系统环境中,终端显示的主机名若与实际需求不符,可能会对网络配置、服务部署及日志排查等工作造成不便。无论是单机调试还是批量运维,掌握主机名的修改方法都至关重要。本文将系统介绍五种修改主机名的主流方案,涵盖图形化工具、命令行操作及自动化脚本,您可根据具体场景灵活选择。

一、使用 hostnamectl 命令永久修改主机名
这是银河麒麟 V10 SP1 及以上版本推荐的标准方法。该命令通过 systemd 服务管理工具,可同时更新运行时的内核主机名与持久化配置文件 /etc/hostname,修改后立即生效且重启不丢失。
操作步骤:首先以管理员身份打开终端,执行命令 sudo hostnamectl set-hostname 新主机名,例如 sudo hostnamectl set-hostname kylin-server-01。随后运行 hostnamectl status 查看输出,确认“Static hostname”字段已更新为新名称。
关键补充:务必同步更新 /etc/hosts 文件。使用 sudo vim /etc/hosts 编辑,找到包含 127.0.1.1 原主机名 的行,将其中的旧主机名替换为新主机名,保存退出。此步骤可确保本地服务解析正常,避免因主机名不一致引发连接问题。
二、直接编辑 /etc/hostname 文件并刷新内核主机名
若您偏好直接修改系统配置文件,或所在环境未集成 systemd,此方法更为适用。其核心是手动编辑主机名配置文件,并完成后续的同步与刷新操作。
首先执行 sudo vim /etc/hostname,清空文件内容后,仅输入一行新主机名(避免使用空格及特殊字符),例如 kylin-desktop,保存退出。
接着编辑 /etc/hosts 文件,定位到包含原主机名的行(通常为 127.0.1.1 原主机名),将其整体修改为 127.0.1.1 新主机名。若该行不存在,可在文件末尾手动添加。
最后执行 sudo hostname -F /etc/hostname,使系统立即从配置文件加载新主机名至当前会话。
三、使用 nmtui 工具图形化设置主机名
对于不熟悉命令行的用户,或在无图形界面的服务器版银河麒麟中,可使用 nmtui 这一基于终端的交互式配置工具。该工具集成于 NetworkManager,通过系统接口自动更新配置,无需手动编辑文件。
操作流程:终端中输入 sudo nmtui 启动工具。通过方向键选择 “Set system hostname” 选项并回车。在弹出的输入框中填写新主机名,例如 kylin-server-prod,按 Tab 键切换至“OK”并回车确认。退出工具后,执行 hostname 命令验证当前会话是否已更新。部分系统版本可能需要重启服务或系统方可完全生效。
四、临时修改当前会话主机名
若仅需在当前终端会话中临时变更主机名(例如用于环境测试或服务调试),可使用此方法。该操作仅影响当前 Shell 环境,不会写入任何配置文件,重启系统或新建终端窗口后将恢复原设置。
执行命令 sudo hostname 新主机名,例如 sudo hostname temp-test-01。随后通过 hostname 命令验证输出是否为刚设置的新名称。请注意,此操作不会修改 /etc/hostname 或 /etc/hosts 文件,也不会影响其他已打开的终端。
五、通过 Python 脚本自动化修改主机名
在批量部署或运维大量银河麒麟主机时,手动逐台修改效率低下。此时可通过 Python 脚本实现全自动处理,涵盖配置文件写入、内容替换与内核刷新,并可集成权限校验与错误处理机制。
首先创建脚本文件:sudo nano /tmp/change_hostname.py。复制以下代码并注意保持缩进格式:
#!/usr/bin/env python3
import os, sys
if len(sys.argv) != 2:
print("用法: sudo python3 change_hostname.py <新主机名>")
sys.exit(1)
new_name = sys.argv[1]
with open("/etc/hostname", "w") as f:
f.write(new_name + "\n")
os.system(f"sed -i 's/^127\.0\.1\.1[[:space:]]*.*/127.0.1.1 {new_name}/' /etc/hosts")
os.system(f"hostname -F /etc/hostname")
print(f"主机名已设为: {new_name}")
赋予脚本执行权限:sudo chmod +x /tmp/change_hostname.py。最后运行脚本并指定新主机名:sudo python3 /tmp/change_hostname.py kylin-batch-01。脚本将自动完成所有配置更新与生效步骤。
