linux 호스트 이름 -f 명령이 RHEL에서 작동하지 않습니다.

linux 호스트 이름 -f 명령이 RHEL에서 작동하지 않습니다.

저는 RHEL 5.7을 실행 중이고 이 hostname명령은 올바른 호스트 이름을 제공합니다.
그러나 hostname -s다음과 같이 hostname -f반환됩니다. Unknown host.왜?

답변1

(에서 복사SF에 대한 나의 대답 중 하나)

hostname명령은 DNS 및 에서 데이터를 반환합니다 /etc/hosts.

hostnameuname -n상자의 실제 "호스트 이름" 또는 "노드 이름" 과 동일 합니다.
다른 모든 hostname매개변수는 이 노드 이름을 사용하여 정보를 찾습니다.

따라서 더 진행하기 전에 /etc/hosts파일 형식에 대해 설명해야 합니다.
첫 번째 필드는 매우 명확합니다. 이는 해당 라인의 모든 호스트 이름이 확인되어야 하는 IP 주소입니다. 두 번째 필드는 IP의 기본 호스트 이름입니다. 나머지 필드는 별칭입니다.

따라서 이를 실행하면 hostname -f먼저 노드 이름의 IP를 확인하려고 시도합니다. 방법은 이 방법 hosts:에서 항목을 구성하는 방법에 따라 다릅니다./etc/nsswitch.conf

  • /etc/resolv.confDNS를 사용하도록 구성하면 DNS에서 IP를 얻을 때까지 구성된 검색 도메인을 사용합니다 .
  • /etc/hosts파일을 사용하도록 구성하면 기본 호스트 이름이나 별칭이 현재 노드 이름( )인 줄을 찾아 uname -n해당 줄에 IP 주소를 반환합니다.

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

관련 정보