在redhat 6中永久修改主机名的方法为,在/etc/sysconfig/network中指定 HOSTNAME=newhostname,重启主机后重效.
但在redhat 7中,/etc/sysconfig/network文件仍然存在,cat一下输出结果如下:
[root@rac02 ~]# cat /etc/sysconfig/network
# Created by anaconda
此文件中默认已没有了在redhat 6中熟悉的HOSTNAME=XXX配置参数了,即便手动在此文件中加入,也无效。
在redhat 7中,主机名称分成Transient临时主机名称相同(从网络配置中获得的 fallback 主机名)、Static默认静态主机名(用于在系统启动时设置内核的主机名)、pretty(灵活主机名)三种。
transient主机名和static主机名仅可包含 "-","a-z","0-9" 字符,且最大不超过64个字符长度,pretty主机名可以是任意字符任意长度。
redhat 7提供了两种修改主机名称的方式,此文只介绍永久修改主机名称的方式,两种方式如下:
1、修改/etc/hostname的第一行文本
redhat 7在/etc目录下新增了一个hostname文件,该文件中的第一行文本文字,为识别的主机名,不识别第二行、第三行等字符。
如果在/etc/hostname中设置的主机名称中包含有非 "-","a-z","0-9" 字符,Static仍然可以识别任意字符,但是Transient临时主机名称会抛弃不可包含的字符。
如,修改/etc/hostnames中的配置如下:
[root@rac03 ~]# vi /etc/hostname
+*#rac*03
--修改/etc/hostname后立即对Static主机名称生效,但对Transient和pretty,则需要重起操作系统后才能生效
用hostname获取的当前主机名称则如下:
[root@rac03 ~]# hostname
rac03
可见,hostname命令获取的是Transient名称
另外,用redhat 7新增的hostnamectl命令获取的名称信息则如下:
[root@rac03 ~]# hostnamectl
Static hostname: +*#rac*03
Transient hostname: rac03
Icon name: computer-vm
Chassis: vm
Machine ID: 5a957f52c37d4d21a04019743b3527ac
Boot ID: 81f22d49cfb04dc0b9e1ac3c02cbf749
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
上面看到Static hostname显示的是/etc/hostname文件中配置的原始名称,包含有特殊字符,而transient hostname则自动抛弃了特殊字符,只剩下了可识别的rac03
2、使用hostnamectl命令修改主机名称
hostnamectl是redhat 7才有的命令,它可以修改pretty(易读主机名)、Static(内核静态主机名)与Transient(临时主机名称相同名)等。
如果hostnamectl不指定名称类型,直接set-hostname,则会将Static、Transient改成相同的名称,并且同步更新/etc/hostname文件内容,立即生效,而pretty的名称,则被置空。如:
[root@rac03 ~]# hostnamectl set-hostname rac04
下面是Transient、Static立即生效,但是会话显示的主机名称还是原名称,产生的奇特景象:
[root@rac03 ~]# hostname
rac04
上面,命令行@后面的主机名,为主机的老名称,而用hostname输出的即是新名称。需要重新登陆,两个名称才能一致。
如果用hostnamectl修改主机名,如果未指定修改主机名称类型,则默认为同时修改Transient、Static、pretty的名称,不允许名称以“#”号打头,如:
[root@rac03 ~]# hostnamectl --transient set-hostname #rac+06
Invalid number of arguments.
如果hostnamectl修改的主机名称不以“#”打头,但其中中含有不可识别的字符,则自动去除Transient、Static名称中不可识别的字符,将留下可识别的字符,而pretty名称,则为全字符如:
[root@rac03 ~]# hostnamectl set-hostname rac*6#
[root@rac03 ~]# cat /etc/hostname
rac6
[root@rac03 ~]# hostnamectl
Static hostname: rac6
Pretty hostname: rac*6#
Iconname: computer-vm
Chassis: vm
Machine ID: 5a957f52c37d4d21a04019743b3527ac
Boot ID: e983fdeed6d94b0a91673b6f6758c298
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
[root@rac03 ~]# hostnamectl status --transient
rac6
[root@rac03 ~]# hostnamectl status --static
rac6
[root@rac03 ~]# hostnamectl status --pretty
rac*6#
[root@rac03 ~]#
本文作者:黎俊杰(网名:踩点),从事”系统架构、操作系统、存储设备、数据库、中间件、应用程序“六个层面系统性的性能优化工作
欢迎加入 系统性能优化专业群 ,共同探讨性能优化技术。群号:258187244
个人微信公众号(DBA黎俊杰):