centos7怎么永久修改hosname

centos7怎么永久修改hosname

其实,一般来说安装好虚拟机之后,一般都会进行修改hostname,之前也是在修改的时候,遇到过问题,但是没有深究,今天在修改的时候,好好研究了一下,之前看到好多网上的资料都在讲同时修改/etc/hosts和/etc/sysconfig/network,重启之后可生效,但是centos7,这样做确实不行,如下图:

centos7怎么永久修改hosname

其实临时修改hosts的网上找一下一大堆,在这也就不再赘述,那永久应该怎么做呢?就是用这个命令hostnamectl set-hostname name ,重启后也不会失效。于是就在网上趴了一下。

有篇文章介绍的比较好,有几个关键点:

1、hostname是Linux系统下的一个内核参数,它保存在/proc/sys/kernel/hostname下,但是它的值是Linux启动时从rc.sysinit读取的。

2、/etc/sysconfig/network 确实是hostname的配置文件,hostname的值跟该配置文件中的HOSTNAME有一定的关联关系,但是没有必然关系,hostname的值来自内核参数/proc/sys/kernel/hostname,如果我通过命令sysctl kernel.hostname=Test修改了内核参数,那么hostname就变为了Test了(重启后失效)。

3、hostname跟/etc/hosts下的配置是没有关系的。hostname的修改、变更完全不依赖hosts文件。 其实hosts文件的作用相当如DNS,提供IP地址到hostname的对应。Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。

4、hostname也不是说跟/etc/hosts一点关系都没有。在/etc/rc.d/rc.sysinit中,有如下逻辑判断,当hostname为localhost后localhost.localdomain时,将会使用接口IP地址对应的hostname来重新设置系统的hostname。

具体可参考http://www.cnblogs.com/kerrycode/p/3595724.html

其实我是有个疑惑,就是同时修改/etc/hosts和/etc/sysconfig/network,改完之后我就没有管,前后重启过算是n多次,等到再看的时候,在命令行敲hostname,它确实是变了的,如下图:

centos7怎么永久修改hosname

内核里面的也是修改了,但是用hostnamectl看的时候,它是transient,也就是短暂的,这是个比较疑惑的地方,欢迎有人指点一下。

上一篇:怎样在Android本地视频播放器开发


下一篇:HDU - 5340 Three Palindromes(manacher算法)