主機名稱

主機名稱(英語:hostname),又稱節點名稱nodename),在連上電腦網絡時,特定裝置使用的名稱。在進行電子通訊時,可以用來識別某個裝置之用,諸如全球資訊網電子郵件Usenet中都使用主機名稱來當成識別之用。

互聯網中,主機名稱被附在域名系統(DNS)的域名之後,形成完整網域名稱

Linux

定義

systemd項目

所謂"主機名",其實有三種不同的含義:[1][2]

  • pretty主機名,僅供人類閱讀,可以包含各種特殊字符, 例如"Lennart's Laptop"(必須是UTF-8編碼)。 pretty主機名、chassis(設備類型)、icon(圖標名稱)存儲在 /etc/machine-info 文件中, 詳見 machine-info(5)頁面存檔備份,存於互聯網檔案館) 手冊。
  • static主機名(靜態主機名),在主機啟動時,將會使用它初始化內核主機名。靜態主機名,存儲在 /etc/hostname 文件中, 詳見 hostname(5)頁面存檔備份,存於互聯網檔案館) 手冊。
  • transient主機名(臨時主機名),是一個備用的數值,以供網絡配置搜索時使用。如果配置了靜態主機名且該值是可用時(不為localhost時),臨時主機名將不會被使用。[2] 臨時主機名是映射內核主機的。[3]

內核主機名

內核主機名(kernel hostname),是該機器的機器名,可通過 /proc/sys/kernel/hostname 文件查看[4],主機在啟動時,將會 /etc/hostname 讀取主機名,可通過hostname 命令和hostnamectl 命令設置臨時主機名,但設置的臨時主機名在重啟時將會消失;也可以通過 hostnamectl 命令設置靜態主機名,重啟後不會消失。

相關工具

hostname (net-tools項目)

hostname 命令通過gethostname 函數和 sethostname 函數進行主機名的讀寫。[5][6]而該主機名存儲在內核內存中 utsname 數據結構中。[4] hostname 命令實質操作的對象是臨時主機名。

hostnamectl(systemd項目)

hostnamectl 用於控制系統的主機名。

該命令可 查詢與修改系統主機名以及其他相關設置。它可操作pretty主機名、靜態主機名以及臨時主機名。[2]

主機名稱的操作

$ hostname
localhost

# 設置臨時主機名稱
$ hostname manger1
$ hostname
manger1

# 設置靜態主機名稱,同時內核主機名稱也會被更新
$ sudo hostnamectl set-hostname manager2
$ hostnamectl status 
   Static hostname: manager2
         Icon name: computer-vm
           Chassis: vm
        Machine ID: c0fddf681459441c980f6f25e80e9976
           Boot ID: 4265c546e7cd4542bc832e41d6ae0788
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-957.12.2.el7.x86_64
      Architecture: x86-64
$ cat /etc/hostname 
manager2

相關網站

參考文獻

  1. ^ hostnamectl(1) — manpages-zh — Debian buster — Debian Manpages. manpages.debian.org. [2020-03-12]. 
  2. ^ 2.0 2.1 2.2 hostnamectl(1) — systemd — Debian buster — Debian Manpages. manpages.debian.org. [2020-03-12]. 
  3. ^ hostnamed. www.freedesktop.org. [2020-03-12]. (原始內容存檔於2020-08-18). 
  4. ^ 4.0 4.1 uname(2) — manpages-dev — Debian jessie — Debian Manpages. manpages.debian.org. [2020-03-12]. 
  5. ^ hostname(1) — manpages-zh — Debian jessie — Debian Manpages. manpages.debian.org. [2020-03-12]. 
  6. ^ sethostname(2) — manpages-dev — Debian jessie — Debian Manpages. manpages.debian.org. [2020-03-12].