`
myeasyeye
  • 浏览: 16670 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

linux的hostname修改详解

 
阅读更多
企业软件热点文章
Linux操作系统的高级电源管理 Windows 7中MSN自动脱机解决方法

  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=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查看。



转自:http://soft.chinabyte.com/os/281/11563281.shtml

分享到:
评论

相关推荐

    Linux中hostname修改方法详解

    Linux操作系统的hostname是一个kernel变量,可以使用如下两种方式查看 ...永久更改系统的hostname需要要修改相关的设置文件 1 基于RedHat发行版的linux系统 修改/etc/sysconfig/network文件,将里面

    linux网卡配置详解.docx

    Linux 网卡配置详解 Linux 网卡配置是计算机网络技术中的一种重要配置,用于设置和管理计算机的网络连接。通过配置网卡,可以让计算机连接到局域网、宽域网或互联网,实现数据的传输和共享。在 Linux 操作系统中,...

    05_Linux网络详解.zip

    2. 修改Linux的基本配置 **IP地址配置,最简单的一种 在命令运行 setup,带提示,按照提示修改即可 1.修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=server1.itcast.cn 2.修改ip地址 vi /etc/...

    Linux修改主机名命令详解

    Linux修改主机名命令 1、如果只需要临时更改主机名,可以使用hostname命令。 sudo hostname # 例如: sudo hostname myDebian 这条命令不会更改/etc/hostname文件中的静态主机名(static hostname),它更改的只是...

    linux路由配置在Linux操作系统下修改IP、DNS和路由配置.pdf

    Linux 路由配置详解 Linux 操作系统下修改 IP、DNS 和路由配置是 Linux 系统管理员的基本技能,本文将详细介绍在 Linux 操作系统下修改 IP、DNS 和路由配置的方法。 一、修改 IP 地址 修改 IP 地址可以使用 ...

    linux网卡配置修改IP地址宣贯.pdf

    Linux 网卡配置修改 IP 地址宣贯 Linux 网卡配置修改 IP 地址是 Linux 系统中的一项重要配置,涉及到网卡的 IP 地址、子网掩码、Default Gateway、DNS 等设置。本文将详细介绍 Linux 网卡配置修改 IP 地址的步骤和...

    linux路由配置在Linux操作系统下修改IP、DNS和路由配置参考.pdf

    Linux 路由配置详解 Linux 操作系统下修改 IP、DNS 和路由配置是非常重要的网络管理任务。熟悉使用 ifconfig 命令会非常方便。在本文中,我们将详细介绍如何在 Linux 操作系统下修改 IP、DNS 和路由配置。 一、...

    如何开启Linux的telnet服务开启ftp服务[借鉴].pdf

    Linux_telnet服务配置详解 Linux_telnet服务是一种远程登录服务,允许用户通过telnet客户端连接到Linux服务器上。为了提高服务器的安全性和可用性,需要正确地配置telnet服务。本文将详细介绍如何配置Linux的telnet...

    Linux中的host命令应用实例详解

    host hostname [server] [server]:使用不是由/etc/resolv.conf文件定义的DNS服务器IP来查询某台主机的IP。 二 应用举例 第一种方法:是用resolv.conf中定义的DNS服务器查出百度主机的IP。 第二种方法:是用谷歌的...

    新手用Linux做代理服务器 三招搞定.docx

    Linux 代理服务器搭建详解 本文将详细介绍如何使用 Linux 搭建代理服务器,包括安装 Linux、配置网卡、设置外网网关和 ISP 提供的 DNS 等步骤。 一、安装 Linux 要搭建代理服务器,首先需要安装 Linux 操作系统。...

    linux网络参数配置方法详解

    格式:ifconfig 网络接口 up/down配置dns建立/etc/resolv.conf文件,在里面写入DNS服务器地址配置主机名配置/etc/sysconfig/network文件,同时使用hostname 修改主机名使用例子: 代码如下:[root@twin0898

    linux corosync+pacemaker+drbd+mysql配置安装详解

    一, 基本环境介绍及基本环境配置 ...vip 192.168.1.39  节点1与节点2均需配置 修改主机名: vim /etc/sysconfig/network HOSTNAME=node1.hulala.com 配置hosts解析: vim /etc/hosts 192.168.1.35 node1.hulala

    详解搭建ubuntu版hadoop集群

    用到的工具:VMware、hadoop-2.7.2.tar、jdk-8u65-linux-x64.tar、ubuntu-16.04-desktop-amd64.iso 1、 在VMware上安装ubuntu-16.04-desktop-amd64.iso 单击“创建虚拟机”è选择“典型(推荐安装)”è单击“下...

    解析unix系统中的hosts文件.docx

    不同的Linux版本,该配置文件可能不同,例如Debian的对应文件是/etc/hostname。 hosts文件的作用是非常重要的,特别是在服务器类型的Linux系统中。每台主机都有一个IP地址,用于区分开每台主机,并可以根据IP地址...

Global site tag (gtag.js) - Google Analytics