redhat 7修改主机名的方法

      在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黎俊杰):

redhat 7修改主机名的方法_第1张图片

你可能感兴趣的:(UNIX/Linux)