設定有意義且可識別的主機名稱,有助於簡化管理和維護工作,並增強系統的安全性(例如,基於主機名稱的存取控制規則)。本文介紹了設定主機名稱的常見命令hostname和hostnamectl,以及作為網路管理服務的NetworkManager如何管理和設定主機名稱。
使用限制
作業系統:Alibaba Cloud Linux 3。
hostname查詢和設定臨時主機名稱
通過hostname命令設定的主機名稱在系統重啟後將失效。為實現主機名稱的永久化,可以通過修改/etc/hostname檔案來進行設定。
hostname命令查詢主機名稱。
hostnamehostname命令設定主機名稱。
以設定主機名稱為
alinux-dev-test為例。sudo hostname alinux-dev-test
hostnamectl查詢和設定主機名稱
hostnamectl是一個與使用者互動的前端工具,用於設定或顯示主機名稱及相關資訊,並通過調用systemd-hostnamed服務來實現這些更改。systemd-hostnamed則是在後台執行實際主機名稱管理工作的服務元件。
hostnamectl查詢主機名稱。# 查詢靜態主機名稱 hostnamectl --static # 查詢臨時主機名稱 hostnamectl --transient結果如下圖所示。

hostnamectl設定主機名稱。設定主機名稱。
以設定主機名稱為
alinux-dev-test為例。sudo hostnamectl set-hostname alinux-dev-test查看設定後的靜態主機名稱和臨時主機名稱。
hostnamectl --static hostnamectl --transient結果如下圖所示,
hostnamectl預設同時設定靜態主機名稱和臨時主機名稱。
查看
/etc/hostname檔案。cat /etc/hostname結果如下圖所示,
/etc/hostname檔案中也儲存最新的靜態主機名稱。
(重要)NetworkManager管理和設定主機名稱
NetworkManager在配置網路連接時會處理與網路介面相關的主機名稱設定。當通過NetworkManager修改網路連接的設定時,NetworkManager將通過dbus介面通知systemd-hostnamed進行主機名稱的更改。
NetworkManager通過在NetworkManager.conf檔案中將hostname-mode參數值設定為default或dhcp來管理和設定臨時主機名稱。hostname-mode的具體參數說明如下:
參數值 | 參數說明 |
default | 預設值。
|
dhcp |
|
none | NetworkManager不會管理和設定臨時主機名稱。 |
使用樣本
如需自行設定主機名稱,為避免與NetworkManager的主機名稱管理機制發生衝突,可以通過以下幾種方式進行設定。
(推薦)通過hostnamectl設定靜態主機名稱。以設定主機名稱為alinux-dev-test為例。
sudo hostnamectl set-hostname alinux-dev-test配置
hostname-mode=none設定NetworkManager不管理主機名稱。開啟
/etc/NetworkManager/NetworkManager.conf檔案。sudo vim /etc/NetworkManager/NetworkManager.conf按
i鍵進入編輯模式,在[main]下面添加以下內容。hostname-mode=none按
Esc鍵,輸入:wq後按Enter鍵,儲存配置。重啟NetworkManager使配置生效。
sudo systemctl restart NetworkManager
通過自訂
systemd服務設定主機名稱。在自訂
systemd服務的service檔案中添加以下配置,以確保其在NetworkManager服務之前啟動。[Unit] Before=NetworkManager.service