hostname - 显示或设置系统的域名
domainname - 显示或设置系统的 NIS/YP 域名
ypdomainname - 显示或设置系统的 NIS/YP 域名
nisdomainname - 显示或设置系统的 NIS/YP 域名
dnsdomainname - 显示系统的 DNS 域名
概要
hostname [-a|--alias] [-d|--domain] [-f|--fqdn|--long] [-A|--all-fqdns] [-i|--ip-address]
[-I|--all-ip-addresses] [-s|--short] [-y|--yp|--nis]
hostname [-b|--boot] [-F|--file filename] [hostname]
hostname [-h|--help] [-V|--version]
domainname [nisdomain] [-F file]
ypdomainname [nisdomain] [-F file]
nisdomainname [nisdomain] [-F file]
dnsdomainname
描述
Hostname 用于显示系统的 DNS 名称,以及显示或设置其主机名或 NIS 域名。
获取名称
在不带任何参数调用时,程序会显示当前名称:
hostname 将打印系统名称,该名称由 gethostname(2) 函数返回。
domainname 将打印系统的 NIS 域名。 domainname 使用 gethostname(2) 函数,而 ypdomainname 和 nisdomainname 使用 getdomainname(2)。
dnsdomainname 将打印 FQDN(完全限定域名)的域名部分。 系统的完整 FQDN 使用 hostname --fqdn 返回(但请参阅“THE FQDN”部分中的警告)。
设置名称
在带有一个参数或使用 --file 选项调用时,这些命令将设置主机名或 NIS/YP 域名。 hostname 使用 sethostname(2) 函数,而所有三个 domainname、ypdomainname 和 nisdomainname 命令均使用 setdomainname(2)。 请注意,这仅在下次重新启动之前有效。 更改 /etc/hostname 以进行永久更改。
请注意,只有超级用户才能更改名称。
无法使用 dnsdomainname 命令设置 FQDN 或 DNS 域名(请参阅“THE FQDN”部分)。
主机名通常在系统启动时在 /etc/init.d/hostname.sh 中设置(通常是通过读取包含主机名的文件,例如 /etc/hostname)。
THE FQDN
系统的 FQDN(完全限定域名)是 resolver(3) 为主机名返回的名称,例如,ursula.example.com。 它通常是主机名后跟 DNS 域名(第一个点后的部分)。 可以使用 hostname --fqdn 或 domainname 命令检查 FQDN。
您无法使用 hostname 或 dnsdomainname 命令更改 FQDN。
设置 FQDN 的推荐方法是在 /etc/hosts、DNS 或 NIS 中使主机名成为完全限定名称的别名。 例如,如果主机名为“ursula”,则可以在 /etc/hosts 中添加一行:
12.0.1.1 ursula.example.com ursula
从技术上讲:FQDN 是 `getaddrinfo(3)` 函数为 `gethostname(2)` 函数返回的主机名。DNS 域名是第一个点之后的字符。
因此,这取决于解析器的配置(通常在 /etc/host.conf 中),你可以如何更改它。通常,/etc/hosts 文件在 DNS 或 NIS 之前进行解析,因此最常见的方法是在 /etc/hosts 中更改 FQDN。
如果一台机器有多个网络接口/地址或在移动环境中,则它可能具有多个 FQDN/域名或根本没有 FQDN/域名。因此,应避免使用 hostname --fqdn、hostname --domain 和 dnsdomainname。hostname --ip-address 具有相同的限制,因此也应避免使用。
选项
-a, --alias
显示主机的别名(如果使用)。此选项已被弃用,不应再使用。
-A, --all-fqdns
显示机器的所有 FQDN。此选项枚举所有配置的网络地址,并将其转换为 DNS 域名。无法转换的地址(例如,因为它们没有适当的反向 IP 记录)将被跳过。请注意,不同的地址可以解析为相同的名称,因此输出可能包含重复的条目。不要对输出的顺序做出任何假设。
-b, --boot
始终设置主机名;这允许指定的文件 -F 不存在或为空,在这种情况下,如果尚未设置主机名,则将使用默认主机名 localhost。
-d, --domain
显示 DNS 域名。不要使用 domainname 命令来获取 DNS 域名,因为它会显示 NIS 域名而不是 DNS 域名。请使用 dnsdomainname。请参阅上面“FQDN”部分中的警告,并尽可能使用 hostname --all-fqdns 选项。
-f, --fqdn, --long
显示 FQDN(完全限定域名)。FQDN 由一个简短的主机名和 DNS 域名组成。除非你使用 bind 或 NIS 进行主机查找,否则可以在 /etc/hosts 文件中更改 FQDN 和 DNS 域名(DNS 域名是 FQDN 的一部分)。请参阅上面“FQDN”部分中的警告,并尽可能使用 hostname --all-fqdns 选项。
-F, --file filename
从指定的文件中读取主机名。注释(以 \#\'` 开头的行)将被忽略。
-i, --ip-address
显示主机的网络地址。请注意,只有当主机名可以解析时,此选项才有效。避免使用此选项;请使用 hostname --all-ip-addresses 选项。
-I, --all-ip-addresses
显示所有网络地址。此选项枚举所有配置的网络地址。循环回接口和 IPv6 链路本地地址将被省略。与选项 -i 不同,此选项不依赖于名称解析。不要对输出的顺序做出任何假设。
-s, --short
显示简短的主机名。这是在第一个点处截断的主机名。
-V, --version
在标准输出上打印版本信息并成功退出。
-y, --yp, --nis
显示 NIS 域名。如果提供了参数(或 --file 名称),则 root 用户也可以设置新的 NIS 域名。
-h, --help
打印用法消息并退出。
注意事项
主机名尝试查找 FQDN、别名和主机网络地址时使用的地址族由解析器的配置决定。例如,在 GNU Libc 系统上,可以通过在 /etc/resolv.conf 中使用 inet6 选项来指示解析器首先尝试 IPv6 查找。
文件
/etc/hostname 历史上,此文件应该只包含主机名,而不是完整的规范 FQDN。现在,大多数软件都能够处理此处的完整 FQDN。此文件在启动时由系统初始化脚本读取,以设置主机名。
/etc/hosts 通常,通过将主机名别名为 FQDN,在此处设置域名。
作者
Peter Tobias, <_> Bernd Eckenfels, <_>(NIS 和手册页)。 Michael Meskes, <_>