linux下/etc/hosts 和hostname文件的区别

作者&投稿:威郑 (若有异议请与网页底部的电邮联系)
linux下/etc/hosts 和hostname文件的区别~

hostname与/etc/hosts的关系

很过人一提到更改hostname首先就想到修改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。

hosts文件的作用相当如DNS,提供IP地址到hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。具体可以man hosts。

Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件通常里面包含这一条记录

127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一条记录,分别是IP地址 hostname aliases,三者用空白字符分隔,aliases可选。

127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。

修改hostname后,如果想要在本机上用newhostname来访问,就必须在/etc/hosts文件里添加一条newhostname的记录。比如我的eth0的IP是192.168.1.61,我将hosts文件修改如下:

#hostname blog.infernor.net
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
这样,我就可以通过blog或者blog.infernor.net来访问本机。

从上面这些来看,/etc/hosts于设置hostname是没直接关系的,仅仅当你要在本机上用新的hostname来访问自己的时候才会用到/etc/hosts文件。两者没有必然的联系。

RHEL还有个问题。

我开始在测试的时候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network维持原状,也就是里面的HOSTNAME=localhost.localdomain。我重启系统后居然发现hostname给修改成了blog.infernor.net。这样看的话,倒真觉得/etc/hosts是hostname的配置文件。后来终于在/etc/rc.d/rc.sysinit这个启动脚本里发现了问题的所在。

rc.sysinit文件里一开始就设置了hostname

if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
确实使用了/etc/sysconfig/network里的hostname值。不过后面还有一段关于设置hostname的

ipaddr=
if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ]
; then
ipaddr=$(ip addr show to 0/0 scope global | awk '/[[:space:]]inet
/ { print gensub("/.*","","g",$2) }')
if [ -n "$ipaddr" ]; then
eval $(ipcalc -h $ipaddr 2>/dev/null)
hostname ${HOSTNAME}
fi
fi
脚本判断hostname是否为localhost或者localhost.localdomain,如果是的话,将会使用接口IP地址对应的 hostname来重新设置系统的hostname。问题就出在这里,我的/etc/sysconfig/network默认的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的记录。于是就用192.168.1.61这条记录来替换了hostname。

估计这也是很多人将/etc/hosts误以为是hostname的配置文件的原因。

hostname带选项查询

hostname的-s -f -i等等选项都用到了/etc/hosts或者DNS系统,跟我们讨论的hostname有点远了,也容易产生误会。具体可以man hostname查看。
----------------------------------------

总结一下修改主机名最安全的方法:
1. 停止与主机名相关的软件运行,比如MySQL。
2. 先使用 hostname newname 设置主机名。
3. 在/etc/hosts中修改或增加 ip newname 行,并检查原来127.0.0.1行localhost回环的设置。
4. 在/etc/sysconfig/network中修改HOSTNAME=newname。
5. 重新启动机器并确认是否修改成功。

很多人一提到更改hostname首先就想到修改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。hosts文件的作用相当于DNS,提供IP地址hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。由此,/etc/hosts于设置hostname是没直接关系的,仅仅当你要在本机上用新的hostname来映射自己的IP时候才会用到/etc/hosts文件。两者没有必然的联系。redhat的hostname的配置文件是/etc/sysconfig/network.

hostname与/etc/hosts的关系

很过人一提到更改hostname首先就想到修改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。

hosts文件的作用相当如DNS,提供IP地址到hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。具体可以man hosts。

Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件通常里面包含这一条记录

127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一条记录,分别是IP地址 hostname aliases,三者用空白字符分隔,aliases可选。

127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。

修改hostname后,如果想要在本机上用newhostname来访问,就必须在/etc/hosts文件里添加一条newhostname的记录。比如我的eth0的IP是192.168.1.61,我将hosts文件修改如下:

#hostname blog.infernor.net
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
这样,我就可以通过blog或者blog.infernor.net来访问本机。

从上面这些来看,/etc/hosts于设置hostname是没直接关系的,仅仅当你要在本机上用新的hostname来访问自己的时候才会用到/etc/hosts文件。两者没有必然的联系。

RHEL还有个问题。

我开始在测试的时候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network维持原状,也就是里面的HOSTNAME=localhost.localdomain。我重启系统后居然发现hostname给修改成了blog.infernor.net。这样看的话,倒真觉得/etc/hosts是hostname的配置文件。后来终于在/etc/rc.d/rc.sysinit这个启动脚本里发现了问题的所在。

rc.sysinit文件里一开始就设置了hostname

if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
确实使用了/etc/sysconfig/network里的hostname值。不过后面还有一段关于设置hostname的

ipaddr=
if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ]
; then
ipaddr=$(ip addr show to 0/0 scope global | awk '/[[:space:]]inet
/ { print gensub("/.*","","g",$2) }')
if [ -n "$ipaddr" ]; then
eval $(ipcalc -h $ipaddr 2>/dev/null)
hostname ${HOSTNAME}
fi
fi
脚本判断hostname是否为localhost或者localhost.localdomain,如果是的话,将会使用接口IP地址对应的 hostname来重新设置系统的hostname。问题就出在这里,我的/etc/sysconfig/network默认的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的记录。于是就用192.168.1.61这条记录来替换了hostname。

估计这也是很多人将/etc/hosts误以为是hostname的配置文件的原因。

hostname带选项查询

hostname的-s -f -i等等选项都用到了/etc/hosts或者DNS系统,跟我们讨论的hostname有点远了,也容易产生误会。具体可以man hostname查看。
----------------------------------------

总结一下修改主机名最安全的方法:
1. 停止与主机名相关的软件运行,比如MySQL。
2. 先使用 hostname newname 设置主机名。
3. 在/etc/hosts中修改或增加 ip newname 行,并检查原来127.0.0.1行localhost回环的设置。
4. 在/etc/sysconfig/network中修改HOSTNAME=newname。
5. 重新启动机器并确认是否修改成功。

/etc/hosts文件是早期用于将域名解析成ip地址的方法,存在只是为了向下兼容。是文本文件
hostname是指的主机名称。 本身这个是一个程序。是二进制文件 。


linux系统下如何安装软件
1、查看文件信息,可以看到文件是存在的,并且是可以执行的。-rwxr-xr-x 1 yuan yuan 20581 4月 29 2004 tshref 2、原因是系统位数与该可执行文件需要的lib库位数不匹配。用uname命令打印系统信息,发现系统是64位系统。3、用file命令查看文件信息,发现是一个32位可执行文件。4、要想在64位系...

Linuxx下安装软件方法汇总
软件的安装--- Linux下软件的安装主要有两种不同的形式。第一种安装文件名为filename.tar.gz。另一种安装文件名为 filename.i386.rpm。以第一种方式发行的软件多为以源码形式发送的。第二种方式则是直接以二进制形式发行的。i386即表示该软件是按 Inter 386指令集编译生成的。--- 对于第一种,安装方法如下:-...

linux下如何删除文件夹而不删除文件夹里的内容?
在Linux系统中,删除文件夹同时保留内容的方法主要有两种。首先,打开文件夹中的所有文件,然后使用"rm -rf"命令删除文件夹。虽然文件夹被删除,但文件仍可继续访问。其次,将文件夹中的所有文件硬连接至其他目录下,之后使用"rm -rf"命令删除文件夹,文件依然能被访问。硬连接允许文件在多个目录下同时存...

linux系统下无法访问图形界面怎么办
linux 下通过xhost进入图形界面,经常会出现报错“unable to open display” linux下的操作步骤如下: [root@localhost ~]# vncserver New 'localhost:1 (root)' desktop is localhost:1 Starting applications specified in \/root\/.vnc\/xstartupLog file is \/root\/.vnc\/localhost:1.log [root@localhos...

linux服务器下如何新建网站linux服务器怎么搭建网站
1.Apache是Linux下的Web服务器,Apache用的是静态页面,需要加载模块来支持动态页面,会动态实时的调整进程来处理,最合理的使用多核CPU资源,支持虚拟主机应用,多个Web站点共享一个IP地址。安装Web服务 先安装Web服务,通过命令yumgroupinstall命令进行安装,建议用groupinstall而不用Install是因为groupinstall,...

linux硬盘大小查看linux硬盘大小
linux下查看硬盘大小的命令:1、查看当前文件夹下所有文件大小(包括子文件夹)2、查看指定文件夹下所有文件大小(包括子文件夹)3、查看指定文件大小 4、查看指定文件夹大小 二、Ubuntu查看磁盘空间大小命令 df-hDf命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式...

linux软件如何下载
如何在Linux下安装软件,我说几个方法:一.使用rpm类型的软件包进行安装,虽然排在最前面但是我也不推荐新手使用,因为所依赖的包会很多。1.从官网下载rpm软件包,直接通过命令 rpm-ivh软件包名 如果是阿里云服务器可以使用命令。2.如果镜像源非常新,系统可以联网,使得yuminstall软件包名来安装很方便。二...

Linux 下 如何在一个目录下创建多个 子目录
1、首先打开xshell软件连接上linux服务器,如下图所示。2、使用【mkdir 目录名】创建目录并cd到目录下,如下图所示。3、然后输入指令【touch 文件名】创建一个空文件,如下图所示。4、接着使用【vim 文件名】创建一个空文件并打开进入编辑,如下图所示。5、最后输入【ls -l】查看当前目录下的文件...

linux 下的关机命令
4、init 0, init是所有后台进程的始祖,并且是Linux系统运行中必不可少的程序之一,进程号始终为1,因此向init发送TERM信号将终止所有用户进程,守护程序等。Shutdown使用此机制, init定义8个运行级别,“init 0”关机,“init 1”重新启动,如下图所示。5、reboot,“reboot”的工作过程几乎与“...

在linux 下怎么查看服务器的cpu和内存的硬件信息
以Linux centos 7服务器为例,查看服务器的cpu和内存的硬件信息方法如下:1、鼠标右键点击桌面,选择“打开终端”,如下图所示。2、先输入命令“cat \/proc\/cpuinfo”,然后再按回车键就能看到服务器的CPU信息,如下图所示。3、在输入命令“cat \/proc\/meminfo ”,然后按回车键,就能查看到内存的信息...

灵武市17356456852: linux下的/etc是干什么用的?为什么命名为etc? -
尉标活血: 初期:早期UNIX中,贝尔实验室的解释是:etcetra directory . etc. 就是Et cetra.表示其他、等等什么的,英语里能常常看都这个缩写的.是用来放其他不能归类到其他目录中的内容.后来FHS规定用来放配置文件,就解释为:"Editable Text ...

灵武市17356456852: linux下的etc是什么意思 -
尉标活血: Etc是Electronic the collection的缩写,指电子不停车收费系统,是指车辆在通过收费站时通过车上安装的Etc车载系统与收费站之间微波通讯,进行车辆识别,再联合网络和银行进行自动扣费的一种新型收费模式.

灵武市17356456852: LINUX根目录下的bin boot dev etc 这几个目录的作用是什么? -
尉标活血: /bin:存放最常用命令; /boot:启动Linux的核心文件; /dev:设备文件; /etc:存放各种配置文件; /home:用户主目录; /lib:系统最基本的动态链接共享库; /mnt:一般是空的,用来临时挂载别的文件系统; /proc:虚拟目录,是内...

灵武市17356456852: linux下etc/selinux这个文件夹没有是什么原因?
尉标活血: 哈哈,这简单!没有安装selinux相关的包可以查看所使用的发行版是否有相关包,没有的话,说明该发行版没包含该子系统selinux跟安全相关

灵武市17356456852: linux下的etc目录如何找到呢 -
尉标活血: 1、连接上相应复的linux主机,进入到等待输入shell指令的linux命令行状态下.制2113 2、其次,在命令行中输入:cd /etc. 3、键盘按“回车5261键”运行shell指令,此时会看到进4102入了/etc目录,说明/etc目录是存在的1653,反之则不存在.

灵武市17356456852: linux下的etc目录怎么看? -
尉标活血: login后面输入用户名和密码(最好是root);之后cd /etc,然后输入ls -l 就可以看到etc下面的所有目录了.不知是否解答了您的问题.

灵武市17356456852: LINUX下 /etc这个文件里都是什么啊
尉标活血: /etc下面放置的都是系统或者是程序的配置文件!很重要! 我们做服务器,或者修改系统都会用到它下面的文件!

灵武市17356456852: linux 下的etc /init.d -
尉标活血: /etc/init.d 是一般开机的启动服务存放在这个目录下.portmap start 是打开端口映射器../nfs start 是打开网络文件系统服务的.

灵武市17356456852: linux 下 etc/selinux 这个文件夹 没有 是什么原因? -
尉标活血: 1你要先用uname -r命令查看下内核版本,selinux是2.6版本内核的linux版本提供的强制访问控制系统. 2.如果你用的是Red Hat Linux9.0是没有这个selinux 的. 3.selinux默认安装在fedora和Red Hat Enterprise Linux上面. 4.使用绝对路径.selinux是有一个文件,文件是在/etc/sysconfig/下面有个selinux文件. 卢韬旭

灵武市17356456852: Feora 18下怎样修改通过grub.cfg文件来加密grub2的选择界面?
尉标活血: 主要是要在grub配置文件添加set superusers= , password 或者 password_pbkdf2这几个命令.编辑/etc/grub.d/40_custom文件,添加启动配置菜单(示例): #设置超级用户 set superusers="root"#设置超级用户保密密码hashed_...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网