在 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() 长期以来一直是内核系统调用,因此即使内核没有做与主机名一样,它仍会存储并返回它。