Hostname
linux hostname -f 命令在 RHEL 上不起作用
我正在執行 RHEL 5.7,該
hostname
命令為我提供了正確的主機名。但是
hostname -s
並hostname -f
返回:Unknown host
。為什麼?
(抄自我對 SF 的回答之一)
該
hostname
命令從 DNS 和/etc/hosts
.
hostname
等同於uname -n
並且是框的實際“主機名”或“節點名”。所有其他
hostname
參數都使用此節點名來查找資訊。所以在繼續之前,我應該解釋一下
/etc/hosts
文件格式。第一個欄位相當明顯,它是該行上所有主機名應解析的 IP 地址。第二個欄位是該 IP 的主要主機名。其餘欄位是別名。
因此,如果您執行
hostname -f
它,它將首先嘗試為您的節點名解析 IP。根據您hosts:
在此方法中配置條目的/etc/nsswitch.conf
方式會有所不同。
- 如果您將其配置為使用 dns,它將使用配置的搜尋域,
/etc/resolv.conf
直到從 DNS 獲得 IP。- 如果您將其配置為使用文件,它將查找
/etc/hosts
主主機名或別名是您目前節點名 (uname -n
) 的行,然後在該行中返回 IP 地址。一旦獲得 IP,它將嘗試對該 IP 進行反向查找。同樣,它會為此使用 DNS,並且您的主機文件基於您的
nsswitch.conf
. 在使用您的主機文件的情況下,它將返回主要條目(這是文件中 IP 之後的第一個欄位)。
hostname -a
僅適用於 hosts 文件,因為在 DNS 中進行反向查找只會給您 1 個結果。使用 hosts 文件,它會在匹配行中返回別名(這是第一個條目之後的所有內容,即主主機名)。
簡而言之,您的問題的可能原因是您沒有
/etc/hosts
包含您的主機名 (uname -n
) 的條目。範例
如果您的節點名是“foobar”,並且您有這樣的條目
/etc/hosts
:127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
然後你會得到以下命令結果:
# hostname foobar # uname -n foobar # hostname -f foobar.example.com # hostname -a foobar localhost.localdomain localhost