Ubuntu的hostname需要通過**/etc/hostname
(永久存儲)和/etc/hosts
**(本地解析)兩個文件配合設置,任一文件未正確修改都會導致不生效。
/etc/hostname
:需用文本編輯器(如sudo nano /etc/hostname
)刪除舊主機名,替換為新主機名(僅一行,無多余空格),保存后退出。/etc/hosts
:需修改127.0.1.1
或127.0.0.1
對應的舊主機名為新主機名(例如127.0.1.1 new-hostname
),避免系統因無法解析新主機名而回退到舊名稱。即使修改了配置文件,部分服務仍緩存舊主機名,需通過重啟使更改生效:
sudo reboot
,系統會重新讀取配置文件并應用新主機名。sudo systemctl restart NetworkManager
sudo systemctl restart networking
sudo netplan apply
(無需重啟)。若系統使用cloud-init(常見于云服務器),其默認會保留初始主機名(preserve_hostname: true
),需修改該配置:
/etc/cloud/cloud.cfg
文件,找到preserve_hostname: true
,將其改為false
。sudo hostnamectl set-hostname new-hostname
)并重啟系統。Ubuntu對主機名有嚴格要求,不符合規范會導致設置無效:
-
)和點(.
),禁止使用下劃線(_
)、空格或其他特殊字符。若系統啟用了DNS緩存服務(如nscd
),緩存的主機名可能導致新名稱不生效:
sudo systemctl restart nscd
(若未安裝,可通過sudo apt install nscd
安裝)。若使用hostname new-hostname
命令修改主機名,僅為臨時生效(重啟后恢復舊名稱)。需通過hostnamectl set-hostname new-hostname
進行永久修改,并配合上述配置文件調整。
通過以上步驟逐一排查,通??山鉀QUbuntu hostname設置不生效的問題。若仍無法解決,建議查看系統日志(sudo journalctl -xe
)獲取具體錯誤信息,進一步定位原因。