Linux 修改主機名稱需同步調整網路設定與本地解析,否則重啟後失效或服務異常。本文提供 CentOS/RHEL 6/7 通用的永久修改步驟。
vi /etc/sysconfig/network
設定:
NETWORKING=yes
HOSTNAME=newhostname
vi /etc/hosts
確保包含:
127.0.0.1 localhost localhost.localdomain
192.168.1.120 newhostname newhostname
注意: 第二行 IP 為本機實際固定 IP,主機名稱需與 HOSTNAME 一致。
hostname newhostname
# 或
sysctl kernel.hostname=newhostname
新開 Shell 即可看到提示符變更。
reboot
# 或
init 6
Systemd 系統建議使用 hostnamectl:
hostnamectl set-hostname newhostname
此指令會同步更新 /etc/hostname、/etc/hosts、/etc/machine-info,並即時生效,無需重啟。
hostname
hostname -f
cat /etc/hostname
檢查服務日誌(如 systemctl status sshd、journalctl -u network)確認無解析錯誤。
| 現象 | 原因 | 解決 |
|---|---|---|
| 重啟後主機名復原 | 未修改 /etc/sysconfig/network 或 /etc/hostname | 按上述步驟完整修改 |
sudo 報 unable to resolve host | /etc/hosts 缺少主機名對應 127.0.0.1 | 補上 127.0.0.1 newhostname |
| 叢集/資料庫啟動失敗 | 服務依賴主機名解析 | 修改前先停止相關服務,修改後再啟動 |