`

linux中如何修改hostname

阅读更多

转载自:http://www.qqread.com/linux/2010/09/e495987.html

 

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

 

分享到:
评论

相关推荐

    Linux中hostname修改方法详解

    Linux操作系统的hostname是一个kernel变量,可以使用如下两种方式查看 # hostname 和 # cat /proc/sys/kernel/hostname 临时修改hostname 通过hostname命令可以设置系统的hostname # hostname newname new...

    深入理解Linux修改hostname(推荐)

    主要介绍了深入理解Linux修改hostname(推荐),具有一定的参考价值,有兴趣的可以了解一下。

    解决linux找不到hostname的处理

    在Linux环境中运行服务时,可能会遇到“UnknownHostException”的异常情况,这通常发生在尝试访问或设置主机名时出现问题。本文将详细介绍如何诊断并解决这一问题。 #### 错误信息分析 根据提供的部分日志信息: ``...

    linux下修改主机名

    linux下修改主机名的方法有很多,有的是直接一条命令结束,我的是分步完成,菜鸟都看得懂

    linux-suse11修改主机名

    首先,我们来详细讨论如何在SUSE 11中修改主机名: 1. **修改hostname文件**: - 打开终端,使用文本编辑器打开 `/etc/hostname` 文件。 - 将当前的主机名替换为你想要的新主机名,确保每个单词之间仅用一个点(....

    Linux修改hostname与免密码登录的方法

    主要介绍了Linux修改hostname与免密码登录的方法,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下

    Linux修改本机/etc/hosts的hostName后经常不生效

    1、Linux修改本机别名/etc/hosts的hostName后经常不生效解决  Linux修改本机别名/etc/hosts的hostName后经常不生效, 比如我们/etc/hosts的内容如下:  #192.68.1.10 message.xxx.com  192.68.1.11 message....

    在Linux的系统下如何才能修改IP信息

    Linux系统下修改IP信息的方法 在 Linux 系统下,修改 IP 信息是一个非常重要的操作。以前,我们通常使用 ifconfig 命令来修改 IP 地址,但是这种方法有一个很大的缺点,就是重启后需要重新设置。为了避免这种麻烦,...

    13671648877#MyNote#linux_修改主机名1

    Linux 修改主机名修改前修改后修改HOSTNAME修改文件使用hostnamectlOperating System: CentOS Linux 7 (Co

    linux系统中修改IP和DNS的命令.docx

    Linux 系统中修改 IP 和 DNS 的命令 Linux 系统中修改 IP 和 DNS 的命令是非常重要的网络管理操作。下面将详细介绍如何在 Linux 系统中修改 IP 和 DNS。 一、 Ubuntu 版本命令行设置 IP 在 Ubuntu 版本中,可以...

    Linux实验8

    在实验中,你需要按照指定的目录结构存放`hostname.c`和`makefile`,然后在终端中使用`make`命令来编译和运行程序。这一步骤对于理解和掌握Linux环境下的软件开发流程至关重要,特别是当你需要管理和构建大型项目时...

    Linux修改ip的执行文件.rar

    在Linux系统中,修改IP地址是一项常见的网络管理任务,尤其对于服务器运维人员来说更是必不可少的技能。本资源“Linux修改ip的执行文件.rar”提供了一种通过命令行修改IP的方法,适用于Java应用程序通过SSHHelper...

    LINUX修改IP地址开启ftp[借鉴].pdf

    摘要:本文介绍了在LINUX系统中修改IP地址和开启ftp服务器的步骤,包括修改IP地址、default gateway、DNS、hostname等设置,并安装和配置VSFTP服务器,实现ftp服务器的开启和限制匿名用户的上传和下载权限。...

    linux设置网关修改ip

    本文将详细介绍如何在 Linux 系统中设置网关以及修改 IP 地址,并介绍一些基本的网络命令。 #### 一、理解网络配置文件 Linux 中网络配置的主要文件位于 `/etc/sysconfig/network-scripts` 目录下,通常会有一个或...

    hostAndhostname

    首先,`/etc/hosts`文件是Linux系统中的一个静态IP地址与主机名的映射文件。它提供了一个无需DNS(域名系统)查询的快速查找机制,使得本地系统可以解析其他主机的IP地址。在Hadoop集群中,每个节点都需要知道其他...

    Linux 系统下修改主机名

    在大多数基于Debian的系统(如Ubuntu、Linux Mint等)中,可以使用文本编辑器(如`nano`或`vi`)编辑`/etc/hostname`文件。 ```bash sudo nano /etc/hostname ``` 然后替换原有的主机名为新的主机名,保存并...

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

    本知识点将详细介绍如何在Linux操作系统下修改IP、DNS和路由配置,并解释相关命令及配置文件的作用。 ### 网络接口配置 在Linux系统中,网络接口的配置通常位于`/etc/sysconfig/network-scripts/`目录下。每个网络...

Global site tag (gtag.js) - Google Analytics