快速业务通道

linux的hostname修改详解

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15

  Linux操作系统的hostname是一个kernel变量,可以通过hostname命令来查看本机的hostname.也可以直接cat /proc/sys/kernel/hostname查看.

  #hostname

  #cat /proc/sys/kernel/hostname

  上面两种输出结果相同.

  修改运行时Linux系统的hostname,即不需要重启系统

  hostname命令可以设置系统的hostname

  #hostname newname

  newname即要设置的新的hostname,运行后立即生效,但是在系统重启后会丢失所做的修改,如果要永久更改系统的hostname,就要修改相关的设置文件.

  永久更改Linux的hostname

  man hostname里有这么一句话,”The host name is usually set once at system startup in /etc/rc.d/rc.inet1 or /etc/init.d/boot (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname).” RedHat里没有这个文件,而是由/etc/rc.d/rc.sysinit这个脚本负责设置系统的hostname,它读取/etc /sysconfig/network这个文本文件,RedHat的hostname就是在这个文件里设置.

  ,如果要永久修改RedHat的hostname,就修改/etc/sysconfig/network文件,将里面的HOSTNAME这一行修改成HOSTNAME=NEWNAME,其中NEWNAME就是你要设置的hostname.

  Debian发行版的hostname的配置文件是/etc/hostname.

  修该配置文件后,重启系统就会读取配置文件设置新的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=local

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号