Linux 中使用二进制设置主机名和在文件中设置主机名之间的区别

Linux 中使用二进制设置主机名和在文件中设置主机名之间的区别

在 Linux 中,我可以按如下方式更改主机名:

sudo hostname <hostname>

此外,我只需更改/etc/hostname/etc/hosts文件中的主机名即可。

我的问题是:如果我更改文件中的主机名,我是否仍需要调用sudo hostname <hostname>?除了更改/etc/hostname文件中的主机名之外,此命令还能做什么?

答案1

“活动”主机名实际上存储在内核中。程序不直接使用 /etc/hostname;该文件仅在启动时读取一次以初始化内核主机名。

具体来说,在 Linux 上,“hostname”命令将设置 sysctl 参数kernel.hostname(通过写入/proc/sys/kernel/hostname),并且所有程序将在那里查找系统的当前主机名。

最有可能的是,它的工作方式是出于历史原因——Unix 程序曾经使用过uname()很长时间才能获取当前主机名和操作系统版本,并且 uname() 长期以来一直是内核系统调用,因此即使内核没有与主机名一样,它仍会存储并返回它。

相关内容