Какой дистрибутив? На моей системе Ubuntu 12.04 все 3 работают.
Антон
Какую операционную систему ты используешь? Если Linux, какой дистрибутив? Каково содержание /etc/hostname?
Terdon
1
hostname -fиспользует DNS, у вас есть обратная запись DNS для вашего IP?
Бармар
@terdon Я использую RHEL5 (Red Hat Enterprise Linux версии 5.7 (tikanga)), и такого файла нет (/ etc / hostname)
redoc
@ Barmar Я не настроил DNS на моем хосте. Я добавил IP-адрес и fqdn в мой файл hosts (/ etc / hosts), эта ошибка является результатом того, что DNS не настроен?
Команда hostnameвозвращает результаты из DNS и /etc/hosts.
hostnameэквивалентно uname -nи является фактическим "именем хоста" или "именем узла" коробки.
Все остальные hostnameаргументы используют это имя для поиска информации.
Поэтому, прежде чем идти дальше, я должен объяснить /etc/hostsформат файла.
Первое поле довольно очевидно, это IP-адрес, к которому должны разрешаться все имена хостов в строке. Второе поле является основным именем хоста для этого IP. Остальные поля являются псевдонимами.
Поэтому, если вы запустите hostname -fего, сначала попытайтесь определить IP-адрес для вашего имени узла. В зависимости от того, как у вас hosts:настроена запись в /etc/nsswitch.confэтом методе, будет меняться.
Если он настроен на использование DNS, он будет использовать настроенные домены поиска, /etc/resolv.confпока не получит IP-адрес от DNS.
Если он настроен на использование файлов, он /etc/hostsнайдет строку, в которой основным именем хоста или псевдонимом будет текущее имя узла ( uname -n), а затем вернет IP-адрес в этой строке.
Получив IP-адрес, он попытается выполнить обратный поиск по этому IP-адресу. Опять же он будет использовать DNS для этого и вашего файла hosts на основе вашего nsswitch.conf. В случае использования вашего файла hosts он вернет основную запись (которая является первым полем после IP-адреса в файле).
hostname -aбудет работать только с файлом hosts, поскольку обратный поиск в DNS дает только 1 результат. С файлом hosts он возвращает псевдонимы в соответствующей строке (то есть все после первой записи, основного имени хоста).
Короче говоря, вероятной причиной вашей проблемы является то, что у вас нет записи /etc/hosts, содержащей ваше имя хоста ( uname -n).
Примеры
Если ваше имя узла 'foobar', и у вас есть запись, /etc/hostsнапример, такая:
Это объяснение того, как оно получает ценность, прекрасно! У меня было мое полное доменное имя в конце строки 127.0.0.1, которая имела в качестве основного имени хоста localhost. Я просто удалил их и оставил полное доменное имя только в строке с реальным IP, и это исправило мою проблему с именем хоста -f, возвращающим localhost.
/etc/hostname
?hostname -f
использует DNS, у вас есть обратная запись DNS для вашего IP?Ответы:
(скопировано с одного из моих ответов на SF )
Команда
hostname
возвращает результаты из DNS и/etc/hosts
.hostname
эквивалентноuname -n
и является фактическим "именем хоста" или "именем узла" коробки.Все остальные
hostname
аргументы используют это имя для поиска информации.Поэтому, прежде чем идти дальше, я должен объяснить
/etc/hosts
формат файла.Первое поле довольно очевидно, это IP-адрес, к которому должны разрешаться все имена хостов в строке. Второе поле является основным именем хоста для этого IP. Остальные поля являются псевдонимами.
Поэтому, если вы запустите
hostname -f
его, сначала попытайтесь определить IP-адрес для вашего имени узла. В зависимости от того, как у васhosts:
настроена запись в/etc/nsswitch.conf
этом методе, будет меняться./etc/resolv.conf
пока не получит IP-адрес от DNS./etc/hosts
найдет строку, в которой основным именем хоста или псевдонимом будет текущее имя узла (uname -n
), а затем вернет IP-адрес в этой строке.Получив IP-адрес, он попытается выполнить обратный поиск по этому IP-адресу. Опять же он будет использовать DNS для этого и вашего файла hosts на основе вашего
nsswitch.conf
. В случае использования вашего файла hosts он вернет основную запись (которая является первым полем после IP-адреса в файле).hostname -a
будет работать только с файлом hosts, поскольку обратный поиск в DNS дает только 1 результат. С файлом hosts он возвращает псевдонимы в соответствующей строке (то есть все после первой записи, основного имени хоста).Короче говоря, вероятной причиной вашей проблемы является то, что у вас нет записи
/etc/hosts
, содержащей ваше имя хоста (uname -n
).Примеры
Если ваше имя узла 'foobar', и у вас есть запись,
/etc/hosts
например, такая:Тогда вы получите следующие результаты команды:
источник