`
starryshi
  • 浏览: 12323 次
文章分类
社区版块
存档分类
最新评论

linux的hostname修改详解

阅读更多

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

5
19
分享到:
评论

相关推荐

    Linux中hostname修改方法详解

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

    linux网卡配置详解.docx

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

    Linux常用命令详解.rar

    本资料“Linux常用命令详解.rar”聚焦于这一主题,旨在帮助用户掌握常用的Linux命令,从而更加熟练地使用Linux系统。 1. **ls**:用于列出目录中的文件和子目录。通过添加不同参数,如`-l`(长格式显示)、`-a`...

    RedHat_Linux网络配置文件详解

    如果要更改DNS服务器,你需要编辑`/etc/resolv.conf`文件。此外,如果服务器的IP地址或主机名发生变化,`/etc/hosts`和`/etc/sysconfig/network`文件也需要相应更新。 正确配置这些文件能确保服务器能够正确地连接...

    05_Linux网络详解.zip

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

    linux知识宝库及其详解

    ### Linux知识宝库及其详解 #### 一、概述 随着Linux在中国乃至全球的广泛应用与深入发展,越来越多的技术人员和爱好者开始关注Linux系统的学习与实践。本文档旨在通过一系列简明扼要的知识点介绍,帮助读者快速...

    linux系统命令及其详解

    本资料“Linux系统命令及其详解”详细介绍了Linux环境中常用的各种命令,帮助用户更高效地操作Linux系统。 1. **ls**:用于列出目录中的文件和子目录。通过参数 `-l` 可以显示详细信息,如权限、大小、修改时间等;...

    ftp命令详解--linux/unix

    1. `ftp [-v -d -i -n -g] [hostname]`:这是启动FTP客户端的基本命令,`hostname`是目标服务器的地址。`-v`表示启用详细输出,显示命令交互过程;`-d`开启调试模式,显示更多内部操作;`-i`禁止输入文件名时自动...

    Linux基础学习命令详解

    以下是关于"Linux基础学习命令详解"的一些关键知识点: 1. **目录结构**: - `/`(根目录):所有其他目录的起点。 - `/bin`:存放常用命令的二进制文件,对所有用户都可访问。 - `/boot`:存储系统启动所需文件...

    Linux 系统命令及其使用详解

    以下是对“Linux系统命令及其使用详解”文档中可能涵盖的一些核心知识点的详细阐述。 1. **ls**:用于列出目录内容。你可以使用`ls -l`查看详细信息,`ls -a`显示隐藏文件,`ls -t`按修改时间排序。 2. **cd**:...

    Linux 最新系统命令大全及其使用详解

    这篇文档"Linux系统命令大全及其使用详解"涵盖了许多重要的命令,旨在帮助用户深入理解和熟练运用这些工具。以下是对其中一些关键命令的详细说明: 1. **ls**:列出目录内容。通过`ls -l`可以查看详细信息,包括...

    linux学习笔记和命令操作详解

    Linux学习笔记和命令操作详解是IT初学者及进阶者不可或缺的参考资料,它涵盖了Linux操作系统的基础知识,特别是关于命令和文件架构的详细内容。这里,我们将深入探讨这些关键概念。 首先,Linux目录架构遵循一种...

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

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

    Linux修改主机名命令详解

    在Linux操作系统中,主机...总的来说,Linux修改主机名涉及的命令主要是`hostname`和`hostnamectl`,以及可能的手动编辑`/etc/hostname`文件。理解这些操作可以帮助系统管理员更好地管理和维护Linux环境中的主机标识。

    linux 4.4内核配置选项详解.pdf

    最后,`CONFIG_DEFAULT_HOSTNAME`用于设置默认的主机名,用户可以在系统运行时通过系统调用`sethostname()`进行更改。至于`Support for paging`,这是指内存管理和交换机制,它是现代操作系统中不可或缺的一部分,...

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

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

Global site tag (gtag.js) - Google Analytics