首先要说明,hostname和hosts文件没有必然联系,有不明白的同学可以先自行查阅资料了解hostname和hosts文件的关系。这里简要说明一下。
hosts文件是dns服务的前身,网络刚开始出现的时候,站点比较少,就在每台主机上设置hosts文件,以此用于域名解析,后来网站越来越多,hosts文件这种方式没办法管理以及有效的查询域名信息,所以出现dns这种分布式域名解析服务(即便有dns了,还是会先查hosts文件,如果查不到,再通过dns解析域名)。由于hostname是一个字符串,也可以看成是一个域名,所以可以在hosts文件里面为hostname配置ip。而hostname代表的是主机名,和域名是不一样的。hostname更多的是用在本机的,对其他用户是没有太大意义的(个人感觉是这样的)。即便你配置了自己的hostname,如果别人不把你的hostname放到他主机上的hosts文件中,他还是不能通过hostname访问你。即便你不配置hostname,别人在自己的主机上将一个<ip hostname>配置在hosts文件里,他就可以通过hostname访问你。假如你配置了hostname,如果你不在hosts里面吧hostname和你的ip绑定,ping hostname也还是ping不通的。hostname可以出现在命令提示符前,以提示你当前登录的是那台主机,当然也还有其他的用处,只是更多的是对本机的程序的。
centos7以后将hostname的配置从/etc/sysconfig/network中改到了/etc/hostname中,所以在/etc/sysconfig/network中配置hostname是不起作用的。
根据之前的说明,hostname和hosts文件关系并不大,有些博客说改了hostname之后也要把hosts中出现localhost的地方改成hostname,这样是不对的,凡是需要通过网络通讯的软件或者程序,基本都要用到ip,有一些会用到域名,说不定就有软件会在访问本机的时候用到localhost,如果你把hosts文件中的localhost改成hostname,那这些需要联网的程序都会失败。你自己ping localhost也会失败。所以一般真心不建议把hosts文件里面的localhost换掉。