在使用Linux时,你是否常遇到修改Linux主机名后,重启了依然不成功的情况?如果没有,请略过此文,彼此不耽误工夫。如果遇到过,还是花几分钟看一下。
前言:
1、在redhat 6中永久修改主机名的方法为,在/etc/sysconfig/network中指定 HOSTNAME=newhostname,重启主机后重效。
2、 可是,在redhat 7中,这种方法就不行了。但/etc/sysconfig/network文件仍然存在,cat一下输出结果如下:
# Created by anaconda,
此文件中默认已没有了在redhat 6中熟悉的HOSTNAME=XXX配置参数了,即便手动在此文件中加入,也无效。
3、在redhat 7中,主机名称分成三种:
Transient临时主机名称相同(从网络配置中获得的 fallback 主机名)
Static默认静态主机名(用于在系统启动时设置内核的主机名)
pretty(灵活主机名)
其中,transient主机名和static主机名仅可包含 "-","a-z","0-9" 字符,且最大不超过64个字符长度,pretty主机名可以是任意字符任意长度。
这里仅介绍两种方法:(需求:要将bigdata113改为bigdata114)
一、vi /etc/hostname修改第一行文本
redhat 7在/etc目录下新增了一个hostname文件,该文件中的第一行文本文字,为识别的主机名,不识别第二行、第三行等字符。如果在/etc/hostname中设置的主机名称中包含有非 "-","a-z","0-9" 字符,Static仍然可以识别任意字符,但是Transient临时主机名称会抛弃不可包含的字符。
1)[root@bigdata113 ~]# vi /etc/hostname
bigdata114
说明: 修改后,立即对Static主机名称生效,但对Transient和pretty,则需要重起操作系统后才能生效。
2)可通过hostname命令查看
[root@bigdata113 ~]# hostname
bigdata113
可见,hostname命令获取的是Transient名称
针对redhat 7,可用新增的hostnamectl命令获取的名称信息:
[root@bigdata113 ~]# hostnamectl
Static hostname: bigdata114
Transient hostname: bigdata113
Icon name: computer-vm
Chassis: vm
Machine ID: af19d0f544e64a3ca508be36e33ee1f7
Boot ID: c0e394069977425a9dd4fc6bc681f83f
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64
上面看到Static hostname显示的是/etc/hostname文件中配置的原始名称
二、 使用hostnamectl命令修改主机名称
hostnamectl是redhat 7才有的命令,它可以修改pretty(易读主机名)、Static(内核静态主机名)与Transient(临时主机名称相同名)等。
1)如果hostnamectl不指定名称类型,直接set-hostname,则会将Static、Transient改成相同的名称,并且同步更新/etc/hostname文件内容,立即生效,而pretty的名称,则被置空。
不允许名称以“#”号打头
[root@bigdata113 ~]# hostnamectl set-hostname bigdata114
[root@bigdata113 ~]# hostname
bigdata114
2)如果指定了名称类型。比如只修改transient类型的名称:
[root@bigdata113 ~]# hostnamectl --transient set-hostname bigdata114,则只对该类型有效。其他类似。
测试如下:
[root@bigdata113 ~]# hostnamectl --transient set-hostname test
[root@bigdata113 ~]# hostname
bigdata114
[root@bigdata113 ~]# hostnamectl
Static hostname: bigdata114
Transient hostname: test
Icon name: computer-vm
Chassis: vm
Machine ID: af19d0f544e64a3ca508be36e33ee1f7
Boot ID: c0e394069977425a9dd4fc6bc681f83f
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64
3)如果hostnamectl修改的主机名称不以“#”打头,但其中中含有不可识别的字符,则自动去除Transient、Static名称中不可识别的字符,将留下可识别的字符,而pretty名称,则为全字符如:
说明:上面命令行@后面的主机名,为主机的老名称,而用hostname输出的即是新名称。需要重新登陆,两个名称才能一致。
三、最后,还是改为bigdata114吧,直接命令:
hostnamectl set-hostname bigdata114 完成,常用快捷又方便。
谢谢各位小主,看到此处:)
参考鸣谢:https://blog.csdn.net/ljunjie82/article/details/81837830
—————————————————我也是有底线的—————————————————