关于linux:Linux-hostname命令详解

2次阅读

共计 2246 个字符,预计需要花费 6 分钟才能阅读完成。

1、查看本机的 hostname

hostname

2、批改本机的 hostname

hostname newname

运行后立刻失效(重新启动 shell),然而在零碎重启后会失落所做的批改,如果要永恒更改零碎的 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 外面的记录。

在 Linux 中和 hostname 相干的有几个:

  1. 零碎中有 HOSTNAME 环境变量, 用命令 echo $HOSTNAME 会把 hostname (主机名)显示进去
  2. 还有一个 hostname 命令: 它有几个性能:
    a) 查问主机名:

               i.              hostname // 显示主机名短格局,比方 localhost;
              ii.              hostname -f // 显示主机名的长格局, 带域名,比方:localhost.localdomain
             iii.              hostname –d // 显示域名,比方 localdomain iv>. hostname –I // 显示主机名对应的 IP 地址
              iv.              hostname –a // 显示主机别名(alias), 和 hostname 的输入后果一样, 比方 localhost
              v.              hostname –s // 显示主机名的短格局,也就是从右边第一逗点后面局部,比方                     localhost.localdomain 逗点后面就是 localhost

    b) 设置主机名: 用命令设置的主机名是临时的,零碎重新启动后,设置的主机名就会遗失。

                i.              hostname newname // 设置主机名为 newname
  3. 永恒批改 hostname
    用 hostname 批改的 hostname 是临时的,如果想永恒的批改 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).”. CentOS 中没有这句话举例说的 hostname 文件,而是由 /etc/rc.d/rc.sysinit 这个脚本负责设置零碎的 hostname,它读取 /etc /sysconfig/network 这个文本文件,RedHat 的 hostname 就是在这个文件里设置。

临时放下 /etc/sysconfig/network 配置办法,先理解不带参数的 hostname 和 hostname -a –d –f, - i 的区别: hostname 是调用 gethostname(2)函数,而 hostname -a –d –f, -i 命令是调用 gethostbyname(3)函数;gethostname(2)和 gethostbyname(3)的区别就是 gethostbyname(3)的网络可知性,因而 gethostbyname(3)函数须要询问 /etc/nsswitch.conf 和 /etc/host.conf 文件来决定是从 /etc/sysconfig/network 配置文件里,还是从 /etc/hosts 配置文件里读取信息。

因而配置 hostname 有两个配置文件:
1、/etc/sysconfig/network:没有 /etc/hosts 的性能只是提供一个主机名
性能介绍: 没有 /etc/hosts 的性能只是提供一个主机名, 它外面的 hostname 被 /etc/rc.d/rc.sysinit 读取
配置办法: 用 vim 关上 network 文件,更改 HOSTNAME=NEWNAME; 这样 hostname 名就被改为 newname 了

2、/etc/hosts:
它和网络相干的,相当于 DNS,提供 IP 地址到 hostname 的对应
配置办法: 用 vim 关上 hosts 文件,它的配置格局是:IP FQDN alias, 比方 192.168.1.1 localhost.localdomain localhost,其中 IP=192.168.1.1,FQDN=localhost.localdomain, alias=localhost

留神: 肯定要让配置文件 network 中的 hostname 和 hosts 中的 alias 以及 FQDN 的第一局部统一,否则 hostname -a -f -d - i 命令不能失常工作。
参考链接:
3 ways to check hostname in Linux

正文完
 0