![在 CentOS 上设置新主机名,重启后会变回原名](https://linux22.com/image/572343/%E5%9C%A8%20CentOS%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%E6%96%B0%E4%B8%BB%E6%9C%BA%E5%90%8D%EF%BC%8C%E9%87%8D%E5%90%AF%E5%90%8E%E4%BC%9A%E5%8F%98%E5%9B%9E%E5%8E%9F%E5%90%8D.png)
在 CentOS (5.x) 上,我有一个 VPS,其主机名设置为“olddomain.com”,至少这是我在输入“hostname”命令时获得的域。
我想将其更改为“localhost.localdomain”,因为我认为它更通用且可靠。
localhost.localdomain 已存在于以下文件中:/etc/sysconfig/network 和 /etc/hosts
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
GATEWAY=95.xx.xx.xx
和
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
因此我接下来尝试了这些命令:
hostname localhost.localdomain
和
hostname -v localhost.localdomain
“hostname”命令现在返回这个新值。但重启后它会变回 olddomain.com,或者至少这是“hostname”命令返回的值。
还有什么需要编辑吗?
答案1
将以下行添加到您的 /etc/sysctl.conf
配置文件中。
kernel.hostname = hostname
kernel.domainname = domain.com
并执行命令来读取和应用你的配置文件sysctl -p /etc/sysctl.conf
的更改。/etc/sysctl.conf
答案2
您是否编辑了 /etc/sysconfig/network 文件?或者您只是显示其内容?hostname 命令实际上并不编辑这些文件。当系统启动时,init 脚本会从配置文件中读取主机名,然后将此设置传递给 hostname 命令。此外,如其他帖子所述,请务必编辑您的 hosts 文件,以便您的主机名 <-> ip 的映射在本地主机上正确。
更多信息请访问Red Hat 文档
另外,您是否使用网络管理器来管理网络接口?如果是,则需要进入 NM 并确保设置也与之一致。
答案3
我没有编辑这些文件/etc/sysconfig/network
, /etc/hosts
因为这些已包含我想要的主机名(localhost.localdomain),因此仅通过命令hostname localhost.localdomain
它在重启后不会保存。
但然后我的主机将这两个文件编辑为不同的主机名,重新启动服务器(没有任何其他命令,只是编辑),新主机名应用并保持更改。然后我再次编辑文件并将它们设置为 localhost.localdomain,因为它们在我的其他 VPS 上,现在它们已更新并保留为 localhost,正如我想要的那样。
编辑(11年后):在使用较旧的操作系统(CentOS 7.x)时,我无法通过任何方法更改主机名,最终唯一有效的方法是下面的@bintut 的回答,编辑/etc/sysctl.conf
和添加:
kernel.hostname = hostname
kernel.domainname = domain.com
答案4
我确信这/etc/sysconfig/network
已被弃用。尝试/etc/sysconfig/networking/profiles/default/hosts
一下/etc/sysconfig/networking/profiles/default/network
。