前言
CentOS一共有三种主机名:
静态主机名(Static hostname)
“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。
“静态”主机名需遵从作为互联网域名同样的字符限制规则
瞬态主机名(Tansient hostname)
“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。
“瞬态”主机名需遵从作为互联网域名同样的字符限制规则
灵活主机名(Pretty hostname)
“灵活”主机名也有人叫做“别名”主机名。
“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户。
修改主机名
PS: 这里只详细介绍静态主机名的修改方法
nmtui
作用:基于curses的tui应用,用于交互式NetworkManager,该命令可以理解为NetworkManagerTextUserInterface
用法:直接输入nmtui
命令回车即可进入交互界面
演示:
- Edit a connection:编辑连接
- Activate a connection:激活连接
- Set system hostname:设置主机名
前两个是设置网络相关的,设置主机名选择第三个,弹出对话框如图
修改hostname后,选择OK
继续选择OK返回主界面,再选Quit退出
可以使用hostname
命令查看修改结果
[root@master ~]# hostname
KsC7
hostnamectl
作用:控制系统主机名(Control the system hostname)
用法:hostnamectl [OPTIONS...] {COMMAND}
选项:
- --static 只作用于静态主机名
- --transient 只作用于瞬态主机名
- --pretty 只作用于灵活主机名
PS: hostnamectl不仅仅只有以上三个选项,这里只提及与本文相关的选项,下面命令同理。
命令:
- status 显示当前系统主机名和相关信息
- set-hostname 设置当前系统主机名
PS: status通常情况下可以省略,也就是说hostnamectl
和hostnamectl status
命令是一样的效果
演示:
查看主机名
[root@master ~]# hostnamectl
Static hostname: master
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
[root@master ~]# hostnamectl status
Static hostname: master
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
可以看到加不加status命令输出结果一致,其中Static hostname为静态主机名,当瞬态主机名和灵活主机名与静态主机名相同时,则省略不显示。
修改主机名
[root@master ~]# hostnamectl set-hostname KsC7
[root@master ~]# hostnamectl
Static hostname: ksc7
Pretty hostname: KsC7
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
在上述例子中,设置的主机名因为有大小写字母,所以静态主机名自动忽略大小写,造成了灵活主机名与静态主机名不同,所以显示了出来,瞬态主机名与静态主机名相同。
[root@master ~]# hostnamectl set-hostname "Ks C7"
[root@master ~]# hostnamectl
Static hostname: ksc7
Pretty hostname: Ks C7
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
上述例子同理,静态及瞬态主机名自动忽略掉了空格。因主机名内有空格,所以需要双引号引起来。
注意:如果使用特殊字符,很多英文半角字符并不能被系统自动忽略,会出现在静态主机名中,可以出现但并不代表运行时不会出错,所以一定要按照域名命名规范来设置静态主机名。
[root@master ~]# hostnamectl --pretty set-hostname "KsC7"
[root@master ~]# hostnamectl
Static hostname: master
Pretty hostname: KsC7
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
上述例子演示了单独设置灵活主机名,而不影响静态主机名或瞬态主机名。
删除主机名
[root@master ~]# hostnamectl set-hostname ""
[root@master ~]# hostnamectl
Static hostname: n/a
Transient hostname: master
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
[root@master ~]# hostname
master
[root@master ~]# cat /etc/hostname
cat: /etc/hostname: No such file or directory
上述例子中,将主机名设置为空,可以清空主机名并删除/etc/hostname
文件,静态主机名为空,瞬态主机名为修改前主机名,重启后静态主机名依然为空,瞬态主机名恢复为默认的localhost
。当然也可以通过输入--pretty等选项,单独删除某一种主机名。
直接修改文件
因为静态主机名不管如何修改,最终都是修改/etc/hostname
文件,所以可以直接修改该文件达到修改且仅修改静态主机名的效果。
[root@master ~]# vi /etc/hostname
gaoqichen.com
"/etc/hostname" 1L, 14C written
[root@master ~]# hostnamectl
Static hostname: gaoqichen.com
Pretty hostname: KsC7
Transient hostname: master
Icon name: computer-vm
Chassis: vm
Machine ID: d0d9b4a49bcae14693e2b38e13cfa3bc
Boot ID: c7c542d3d75e40ab9a9f44c32bcf8809
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
收尾及总结
修改静态主机名说白了本质都是修改/etc hostname
文件,但是并不修改/etc hosts
文件,需手动修改。
[root@KsC7 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@KsC7 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 KsC7
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
修改静态主机名会写入/etc/hostname
文件,但是不会立即生效,可以通过重启本机来使其生效。
如果不方便重启也可以通过systemctl restart systemd-hostnamed
重启hostnamed,然后注销从新登录,即可在命令行更新主机名。
以上三种方法修改主机名均需要按照域名命名规范命名(即:a-z不区分大小写,0-9,“-”),其中第一种和第三种修改方法修改后,是可以保留大小写字母的,但也只是用于命令行显示,其实不区分大小写。
Thanks for watching.