关于修改主机名的疑问

时间:2022-12-27 13:40:15
环境是Centos 7 主要涉及了三个文件

/etc/hosts

/etc/hostname

/etc/sysconfig/network


是这样的,最初的主机名是localhost.localdomain (与/etc/hostname里一致)。此时/etc/hosts里没有任何改动。

然后我修改了/etc/hosts 添加一行   “本机IP   aaa”   重启过后 发现主机名变成了 aaa  ,并且/etc/hostname 里没有变化

到这里我有个疑问(1)它是根据什么改变的主机名? 是通过分析hosts里这个IP就是本地IP,然后才将该IP所对应的映射名用作主机名的吗?

然后我将/etc/hostname 里的localhost.localdomain改成了bbb,重启发现 主机名变成bbb,然后我继续修改/etc/hosts文件。修改之前添加的一行

 “本机IP   aaa”  变为  “本机IP   ccc”  但是我重启后发现 主机名还是bbb 。 此时我发现/etc/hosts已经没法改主机名了。(2)为什么之前/etc/hostname 

里面是localhost.localdomain就可以生效呢?


最后我修改/etc/sysconfig/network  添加 hostname=ddd 但是我重启后发现主机名还是依据/etc/hostname (3)那么在Centos7下这个/etc/sysconfig/network

是不是没有了修改主机名的作用了?

(5)除了使用命令 hostname zzz 使主机名当时即可生效,还有没有其他方式类似于source 的方式通过读取参数文件使它立马生效的。


问题有点多,感谢大佬的帮助 关于修改主机名的疑问

6 个解决方案

#1


好像是先后顺序读取主机名吧,也不太深入了解过,来学习下。。。

#2


CentOS 7两个和主机名有关的文件只有两个/etc/hosts和/etc/hostname,在CentOS 7中,主机名分3类:static(静态主机名)、pretty(好看、易读的主机名)和transient(短暂临时的)。其中:
(1).static类的主机名就是我们常说的主机名,由/etc/hostname文件决定。
(2).transient类的主机名是内核动态维护的主机名,默认在系统启动的时候会根据静态主机名进行初始化。
(3).pretty类的主机名是给人看的,是以前版本(例如CentOS 6)没有的功能。它可以包含特殊符号,例如空格。例如将pretty名称命为"MaYun's Host",这种名称在以前的主机名(即static类主机名)里是不允许存在的。
当你改了static主机名,/etc/hosts里主机名和ip的映射关系是不会改变的,这样在重启的时候会很慢,因为要解析。最后开机成功时, 按照你的测试结果(我没测试过),应该是根据解析结果决定最终主机名的。
如果你想搞清楚CentOS 7主机名是如何决定的,你可以用hostnamctl命令修改这3种主机名,并观察/etc/hostname文件的变化以及改改/etc/hosts如何影响主机名。

#3


我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。

#4


引用 2 楼 a905815661 的回复:
CentOS 7两个和主机名有关的文件只有两个/etc/hosts和/etc/hostname,在CentOS 7中,主机名分3类:static(静态主机名)、pretty(好看、易读的主机名)和transient(短暂临时的)。其中:
(1).static类的主机名就是我们常说的主机名,由/etc/hostname文件决定。
(2).transient类的主机名是内核动态维护的主机名,默认在系统启动的时候会根据静态主机名进行初始化。
(3).pretty类的主机名是给人看的,是以前版本(例如CentOS 6)没有的功能。它可以包含特殊符号,例如空格。例如将pretty名称命为"MaYun's Host",这种名称在以前的主机名(即static类主机名)里是不允许存在的。
当你改了static主机名,/etc/hosts里主机名和ip的映射关系是不会改变的,这样在重启的时候会很慢,因为要解析。最后开机成功时, 按照你的测试结果(我没测试过),应该是根据解析结果决定最终主机名的。
如果你想搞清楚CentOS 7主机名是如何决定的,你可以用hostnamctl命令修改这3种主机名,并观察/etc/hostname文件的变化以及改改/etc/hosts如何影响主机名。


感谢,学习了,我试了试你说的使用 hostnamectl命令进行修改。pretty和static都没有问题,唯独问题出现在了transient上。

首先 我使用命令hostname bbb (此时我的静态主机名为aaa) 后 ,用hostname查看 反馈bbb,用hostnamectl查看 包含了transient name bbb 这里一切正常。

但是我使用hostnamectl命令修改 hostnamectl set-hostname"ccc"  --transient  后 发现  在使用hostname命令查看,直接返回的是 aaa,但是在此之前临时的主机名是bbb

(静态主机名)。而使用hostnamectl 命令 发现返回transient ccc(这里是正常的)。过了大概一分钟左右再次使用hostnamectl 命令发现transient name 消失了,很奇怪。

目前还没找到相关的说法,我在看看

#5


引用 3 楼 a905815661 的回复:
我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。


看了你的博客,借着你的文章在回顾一遍 关于修改主机名的疑问

#6


引用 5 楼 kainme 的回复:
Quote: 引用 3 楼 a905815661 的回复:

我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。



看了你的博客,借着你的文章在回顾一遍 关于修改主机名的疑问



哈,我也是看到你这个问题,查了下redhat的手册,然后测试了下再写的。

#1


好像是先后顺序读取主机名吧,也不太深入了解过,来学习下。。。

#2


CentOS 7两个和主机名有关的文件只有两个/etc/hosts和/etc/hostname,在CentOS 7中,主机名分3类:static(静态主机名)、pretty(好看、易读的主机名)和transient(短暂临时的)。其中:
(1).static类的主机名就是我们常说的主机名,由/etc/hostname文件决定。
(2).transient类的主机名是内核动态维护的主机名,默认在系统启动的时候会根据静态主机名进行初始化。
(3).pretty类的主机名是给人看的,是以前版本(例如CentOS 6)没有的功能。它可以包含特殊符号,例如空格。例如将pretty名称命为"MaYun's Host",这种名称在以前的主机名(即static类主机名)里是不允许存在的。
当你改了static主机名,/etc/hosts里主机名和ip的映射关系是不会改变的,这样在重启的时候会很慢,因为要解析。最后开机成功时, 按照你的测试结果(我没测试过),应该是根据解析结果决定最终主机名的。
如果你想搞清楚CentOS 7主机名是如何决定的,你可以用hostnamctl命令修改这3种主机名,并观察/etc/hostname文件的变化以及改改/etc/hosts如何影响主机名。

#3


我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。

#4


引用 2 楼 a905815661 的回复:
CentOS 7两个和主机名有关的文件只有两个/etc/hosts和/etc/hostname,在CentOS 7中,主机名分3类:static(静态主机名)、pretty(好看、易读的主机名)和transient(短暂临时的)。其中:
(1).static类的主机名就是我们常说的主机名,由/etc/hostname文件决定。
(2).transient类的主机名是内核动态维护的主机名,默认在系统启动的时候会根据静态主机名进行初始化。
(3).pretty类的主机名是给人看的,是以前版本(例如CentOS 6)没有的功能。它可以包含特殊符号,例如空格。例如将pretty名称命为"MaYun's Host",这种名称在以前的主机名(即static类主机名)里是不允许存在的。
当你改了static主机名,/etc/hosts里主机名和ip的映射关系是不会改变的,这样在重启的时候会很慢,因为要解析。最后开机成功时, 按照你的测试结果(我没测试过),应该是根据解析结果决定最终主机名的。
如果你想搞清楚CentOS 7主机名是如何决定的,你可以用hostnamctl命令修改这3种主机名,并观察/etc/hostname文件的变化以及改改/etc/hosts如何影响主机名。


感谢,学习了,我试了试你说的使用 hostnamectl命令进行修改。pretty和static都没有问题,唯独问题出现在了transient上。

首先 我使用命令hostname bbb (此时我的静态主机名为aaa) 后 ,用hostname查看 反馈bbb,用hostnamectl查看 包含了transient name bbb 这里一切正常。

但是我使用hostnamectl命令修改 hostnamectl set-hostname"ccc"  --transient  后 发现  在使用hostname命令查看,直接返回的是 aaa,但是在此之前临时的主机名是bbb

(静态主机名)。而使用hostnamectl 命令 发现返回transient ccc(这里是正常的)。过了大概一分钟左右再次使用hostnamectl 命令发现transient name 消失了,很奇怪。

目前还没找到相关的说法,我在看看

#5


引用 3 楼 a905815661 的回复:
我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。


看了你的博客,借着你的文章在回顾一遍 关于修改主机名的疑问

#6


引用 5 楼 kainme 的回复:
Quote: 引用 3 楼 a905815661 的回复:

我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。



看了你的博客,借着你的文章在回顾一遍 关于修改主机名的疑问



哈,我也是看到你这个问题,查了下redhat的手册,然后测试了下再写的。