Linux中的hostname在大多数应用中至为重要,例如有些应用强制使用主机名称而不能使用IP地址,如果默认主机名称都为localhost.localdomain 的话那一定会出现问题,而且看起来也是那么的不尽人意。在CentOS6及其以下版本一般通过修改配置文件的办法来修改主机名,此配置文件一般为/etc/sysconfig/network,但在CentOS7中,很多系统管理工具都被替换了。
 

例如想更改主机名,就不能参考以前的方法了,新的配置文件已经更新为/etc/hostname,尽管修改/etc/sysconfig/network配置文件(此文件依然存在,只是是空的)可能起作用,但不得不考虑有些Linux软件是否会使用source此文件或是否使用环境变量$HOSTNAME。
 

在CentOS或RHEL中,有三种定义的主机名:a、静态的(static),b、瞬态的(transient),以及 c、灵活的(pretty)。“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如Dan's Computer)。因此修改CentOS7主机名的方法有以下几种。

 

0.在安装操作系统的时候设定好主机名


1.直接使用文本编辑器修改/etc/hostname配置文件。


2.使用hostnamectl命令,hostnamectl set-hostname name ,再通过hostname或者hostnamectl status命令查看更改是否生效。

在CentOS/RHEL 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。

要查看主机名相关的设置:

# hostnamectl status

 

只查看静态、瞬态或灵活主机名,分别使用“--static”,“--transient”或“--pretty”选项。

# hostnamectl status [--static|--transient|--pretty]

注意*:修改的主机名,带有任何的特殊字符或空白字符都将会被移除,并且提供的参数中任何大写字母都会自动转化成小写


就像上面展示的那样,在修改静态/瞬态主机名时,任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。

 

要同时修改所有三个主机名:静态、瞬态和灵活主机名:

# hostnamectl set-hostname <host-name>


一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你需要手动更新/etc/hosts。

 

如果你只想修改特定的主机名(静态,瞬态或灵活),你可以使用“--static”,“--transient”或“--pretty”选项。

例如,要永久修改主机名,你可以修改静态主机名:

# hostnamectl --static set-hostname <host-name>

注意,你不必重启机器以激活永久主机名修改。上面的命令会立即修改内核主机名。注销并重新登入后在命令行提示来观察新的静态主机名。

 

3.使用nmcli general hostname my-server 命令更改。

关于第2、3条更多操作提示可以参考红帽文档“Red Hat Enterprise Linux 7 Networking Guide”的3.3节和3.4节。

更多信息可以查询与hostname相关的man手册。systemd(1), hostname(1), hostname(5), machine-info(5), hostnamectl(1), sethostname(2)