linux ホスト名 -f コマンドは RHEL では機能しません。

linux ホスト名 -f コマンドは RHEL では機能しません。

私はRHEL 5.7を実行しており、このhostnameコマンドは正しいホスト名を提供します。
ただし、hostname -s次のようにhostname -f返されます。Unknown hostなぜ?

ベストアンサー1

(からコピーSFに対する私の答えの1つ)

このhostnameコマンドはDNSとからデータを返します/etc/hosts

hostnameuname -nボックスの実際の「ホスト名」または「ノード名」と同じです。
他のすべてのhostnameパラメーターは、このノード名を使用して情報を検索します。

したがって、さらに進む前に/etc/hostsファイルの種類について説明する必要があります。
最初のフィールドは非常に明確です。これは、その行のすべてのホスト名を解決する必要があるIPアドレスです。 2番目のフィールドはIPのデフォルトホスト名です。残りのフィールドはエイリアスです。

したがって、これを実行すると、hostname -fまずノード名のIPを解決しようとします。方法は、この方法hosts:で項目を構成する方法によって異なります。/etc/nsswitch.conf

  • /etc/resolv.confDNSを使用するように設定すると、DNSがIPを取得するまで設定された検索ドメインが使用されます。
  • /etc/hostsファイルを使用するように構成すると、デフォルトのホスト名またはエイリアスが現在のノード名()である行が見つかり、その行にuname -nIPアドレスが返されます。

IP を取得すると、その IP のリバースルックアップを試みます。繰り返しますが、DNSを使用し、.hostsファイルに基づいていますnsswitch.conf。ホストファイルを使用している場合は、デフォルトエントリ(つまり、ファイル内のIPの後の最初のフィールド)を返します。

hostname -aDNSでリバースルックアップを実行すると、結果が1つだけ返されるため、ホストファイルのみを使用できます。ホストファイルを介して一致する行(最初のエントリ(デフォルトのホスト名)の後のすべてのエントリ)にエイリアスを返します。

 

/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

おすすめ記事