`
zerxd
  • 浏览: 73229 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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查看。
分享到:
评论

相关推荐

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

    要建立一个安全的 Linux 服务器,需要了解 Linux 环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在 Linux 系统中,TCP/IP 网络是通过若干个文本文件进行配置的,可以通过配置命令 linuxconf(其中网络...

    linux一些标准的环境变量.docx

    本文将详细介绍几个常见的Linux环境变量,包括`SHELL`、`LANG`、`PATH`、`MANPATH`、`INPUTRC`、`BASH_ENV`、`DISPLAY`、`COLORTERM`、`USER`、`LOGNAME`、`MAIL`、`HOSTNAME`和`HISTSIZE`等,并通过一个示例文件...

    Linux常见问题分析(pdf文档)

    - **原因分析**:Linux内核设计的一个特点是尽可能利用空闲内存进行缓存,包括文件系统缓存(`buffers`)和页面缓存(`cached`)。这样做是为了提高文件读取速度和整体系统的响应速度。 - **解决方案**: - 使用`free -...

    这里包含了linux相关知识的介绍及其各种命令

    - 开源免费:任何人都可以使用和修改Linux源代码。 - 稳定性高:Linux通常用于服务器环境,因为其稳定性极高。 - 安全性好:由于其开源特性,安全性问题可以被迅速发现并解决。 - 资源占用低:对于老旧硬件也有...

    linux日常运维练习题

    可以使用 `hostname` 命令查看当前主机名,修改主机名可以编辑 `/etc/hostname` 配置文件。 15. 设置 DNS 需要修改哪个配置文件? 需要编辑 `/etc/resolv.conf` 配置文件。 16. 使用 iptables 写一条规则,吧来源 ...

    linux

    在Linux系统中,可以通过编辑`/etc/hostname`文件来修改主机名。例如,如果想将主机名改为`newname`,可以使用以下命令: ```bash sudo nano /etc/hostname ``` 然后在打开的文件中,将原来的主机名改为`newname`,...

    linux一句话问答

    1. **修改主机名**:在Linux系统中,主机名可以通过编辑`/etc/hostname`文件来改变,或者使用命令`hostnamectl set-hostname <new_hostname>`进行动态修改。 2. **启动到文字界面**:如果想要让Linux系统在启动时不...

    linux 系统变量 PS1的简介.docx

    本文详细介绍了Linux系统中`PS1`变量的作用及其配置方法,并列举了常见特殊符号的含义。通过对`PS1`的合理配置,用户不仅能够获得更加个性化的命令行界面,还能提升工作效率。此外,了解其他提示符变量也有助于...

    初学Linux必须要掌握的150个命令.pdf

    文档详细介绍了150个基本且重要的Linux命令,这些命令对于日常的系统管理和运维工作至关重要。文档不仅包含了每个命令的基本使用方法,还提供了许多实用的例子,帮助读者更好地理解和应用。 #### 线上查询及帮助...

    Linux一句话精彩问答

    1. **修改主机名**:通过编辑`/etc/sysconfig/network`文件,将`HOSTNAME`行改为所需的主机名,然后运行`hostname 新主机名`。即使不重启,主机名也会立即改变。 2. **启动到文字界面**:在`/etc/inittab`文件中,...

    实验3 linux桌面的简单介绍与简单的网络配置.pdf

    8. **命令提示符含义及退出**:命令提示符通常显示当前用户的用户名(如`root`)和主机名,例如`root@hostname:`。要退出命令提示符,可以输入`exit`命令或者按下`Ctrl+D`组合键。 9. **Linux网络配置**:配置Linux...

    linux目录结构简介(只有这一篇)

    本篇文章旨在详细介绍Linux的基本目录结构及其含义,帮助初学者更好地理解Linux系统的核心概念。 #### 1. `/bin` (Binary) 此目录主要存放系统最常用的命令和应用程序。这些命令通常用于文件操作、进程管理等方面...

    专题资料(2021-2022年)linux服务器环境配置基础.docx

    - 配置文件修改:永久修改主机名需编辑`/etc/sysconfig/network`文件,修改`HOSTNAME`字段。 2. **IP地址的配置** - 命令修改:使用`ifconfig 网卡名 IP 地址 netmask 子网掩码`来临时修改IP,`ifconfig 网卡名 ...

    Linux命令大全

    - 开源性:任何人都可以查看、修改和分发Linux的源代码。 - 稳定性:Linux以其高度稳定性和可靠性著称。 - 安全性:相比其他操作系统,Linux具有更高的安全性。 - 软件支持:拥有大量的免费和开源软件。 ##### ...

    Linux模拟参考题

    根据提供的信息,我们可以总结出...通过这两个模拟题,我们可以看到RHCE考试中对Linux系统管理和配置技能的要求非常高。考生不仅需要熟悉基本的命令行操作,还需要掌握如何解决复杂的问题,如密码破解和网络配置等。

    linux一句话精彩问答.pdf

    - **临时修改**: 使用 `hostname newname` 可以临时更改主机名。 - **永久修改**: 编辑 `/etc/hostname` 文件,将其中的内容改为新的主机名,并重启系统使更改生效。 #### 2. 启动到文字界面 **知识点**: 如果希望...

    linux服务器的一些知识点.pdf

    - **开放源代码**:这使得任何人都可以自由地使用、修改和分发Linux系统。 - **成本低廉**:Linux通常免费提供,降低了企业的IT成本。 - **社区支持**:拥有庞大的开发者和用户社区,能够提供丰富的技术支持和解决...

Global site tag (gtag.js) - Google Analytics