/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如何影响主机名。
(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名,是临时生效的。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。
#4
感谢,学习了,我试了试你说的使用 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
看了你的博客,借着你的文章在回顾一遍
#6
哈,我也是看到你这个问题,查了下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如何影响主机名。
(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名,是临时生效的。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。
#4
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
我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。
看了你的博客,借着你的文章在回顾一遍
#6
我刚测试了下,/etc/hosts并不会影响主机名啊。
/etc/hostname中的文件名是static主机名,实时生效,重启也生效。
hostname修改主机名修改的是transient名,是临时生效的。
看了你的博客,借着你的文章在回顾一遍
哈,我也是看到你这个问题,查了下redhat的手册,然后测试了下再写的。