如果不需要重新引导以使重命名生效,我如何重命名LINUX主机?

分享于 

4分钟阅读

互联网

 

问题:

我在serverfault上搜索这个问题的答案,shockingly找不到它。 我知道这是可能的,但我不记得怎么 fdo 。 如何更改主机主机名,使更改在不重新引导的情况下生效?

我正在使用 Ubuntu 16和 Ubuntu 18.

Ubuntu的一个大特点是图形化桌面和图形化系统工具。 然而,我们在生产环境中运行 Ubuntu,因此我们选择不使用图形桌面或者工具,以便不使用我们在生产环境中所需的资源。

我知道要重命名主机,我编辑文件:

  • /etc/hostname
  • /etc/hosts

/etc/hostname 中,只使用新主机名替换当前主机名( 很快成为以前的主机名) 。

/etc/hosts 文件中的Ubuntu具有以下行:


127.0.1.1 your-hostname your-hostname



当主机启动并在网络内建立自己时,它充当引导。 在更改主机名之前,your-hostname 是当前( 很快成为以前的主机名),作为更改主机主机名的一部分,将使用新名称替换该名称。

我所熟悉的是执行上述两个步骤,然后重新引导主机。 但是很多时候,像一个生产服务器一样,希望执行重命名,但不重新启动主机。

如何更改主机上的主机名并使更改生效而不重新引导主机?


回答 1:

你可以使用 hostnamectl 工具在基于systemd的系统上更改主机名的内核。 例如:


hostnamectl set-hostname whatever



你可以使用以下方法查看主机名的系统概念:


hostnamectl # equivalent to hostnamectl status



记住,这不会改变主机名的运行过程。 这样的进程必须再次检查主机名才能更新,而且几乎没有进程。 因此需要重新启动这样一个进程。 为了使每个进程都开始使用新主机名,必须重新启动。 重启系统通常比单独重启每个服务要简单得多。


回答 2:

你可以使用以下方法更改内核主机名:

 
hostname NEWNAME



 

在Linux上,这实际上等于以下任意一种:


sysctl kernel.hostname=NEWNAME



echo NEWNAME>/proc/sys/kernel/hostname



这不依赖于 systemd ( 与 hostnamectl 不同,它需要 systemd-hostnamed ) 或者任何它的他非标准工具,通常( 尤其在 shellscript init系统中) 是初始主机名设置的方式。

大多数程序和服务并不实际使用主机名;很少使用( 比如 )的。 使用Kerberos的Postfix 或者服务可以重新启动 one-by-one 。

( 一些程序在重启前缓存主机名,其他程序在每次需要时都会对它的进行查询。 程序还具有 poll(2)/proc/sys/kernel/hostname 接收更改通知的能力,但很少有这样的程序。



Effect  HOST  重命名  
相关文章