首先要說明,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換掉。