В чем разница между `hostname` и` uname -n`

На моем сервере они оба возвращают имя хоста:

$ ubuntu@mt-solo:~$ uname -n
myserver
$ ubuntu@mt-solo:~$ hostname
myserver

Это всегда так?

8
задан 13 May 2013 в 06:10

1 ответ

В Linux они эквивалентны. Один просто запекается в утилиту uname, а другой - в утилиту hostname.

uname -n

Печатает имя хоста сетевого узла или «имя узла».

hostname

Без каких-либо аргументов печатает имя системы, возвращаемое функцией gethostname ().

Документация к функциям uname() включает в себя следующую информацию:

Обратите внимание, что не существует стандарта, который говорит, что имя хоста, установленное sethostname (2), является той же строкой как поле nodename структуры, возвращаемой uname () (в действительности, некоторые системы допускают 256-байтовое имя хоста и 8-байтовое имя узла), но это верно для Linux. То же самое верно для setdomainname (2) и поля имени домена.

(обратите внимание, что Linux sethostname() ограничивает имена хостов до 64 байтов)

Еще одно свидетельство того, что в GNU / Linux они точно такие же, содержится в документации по функции gethostname() :

Библиотека GNU C не использует системный вызов gethostname (); вместо этого он реализует gethostname () как библиотечную функцию, которая вызывает uname (2) и копирует до длины байтов из возвращенного поля nodename в name.

По сути, hostname включает внутренний вызов uname.

0
ответ дан 13 May 2013 в 06:10

Другие вопросы по тегам:

Похожие вопросы: