在CentOS7.2或RHEL7.2中,有三种定义的主机名:静态的(static),瞬态的(transient),以及灵活的(pretty)。“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname 自动初始化的主机名。“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或DNS服务器分配。静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户。可以通过hostnamectl、nmtui、nmcli命令修改主机名。
1、在CentOS7.2或RHEL7.2中提供了hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。
[root@test ~]#hostnamectl --help
hostnamectl[OPTIONS...] COMMAND ...
Query or changesystem hostname.
-h --help Show this help
--version Show package version
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on localcontainer
--transient Only set transient hostname
--static Only set static hostname
--pretty Only set pretty hostname
Commands:
status Show current hostname settings
set-hostname NAME Set system hostname
set-icon-name NAME Set icon name for host
set-chassis NAME Set chassis type for host
set-deployment NAME Set deployment environment for host
set-location NAME Set location for host
显示当前主机名设置,MachineID对应文件为/etc/machine-id文件。
[root@test ~]#hostnamectl status
Static hostname: test
Icon name: computer-vm
Chassis: vm
Machine ID:3d87c0ae15eb4f28bc1256e6cfe56f9d
Boot ID:76b151b4d927459d84804e5865cad4cf
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.el7.x86_64
Architecture: x86-64
设置主机名为jason,成功后主机名已经成功修改,通过命令查看已成功如下,仅显示符还未更改过来,命令登陆的退出重新登录即可显示,图形界面注销登陆即可。修改后--pretty主机名保持不变(默认也为空)。主机名成功修改后,/etc/hostname文件内容更新为最新主机名,但是/etc/hosts文件中主机名不变,需要手工修改。
[root@test ~]#hostnamectl set-hostname jason
[root@test ~]# hostname
jason
[root@test ~]#hostnamectl status --static
jason
[root@test ~]#hostnamectl status --transient
Jason
[root@test ~]#hostnamectl status --pretty
[root@test ~]#
2、通过nmtui修改主机名
在终端执行nmtui打开图形界面进行修改,如下:
选择设置主机名,对主机名进行修改。修改之后需要重启systemd-hostnamed.service服务。
同样不需要重启服务器,注销重新登录即可。
3、通过nmcli修改主机名
nmcli可以查看从/etc/hostname文件中查看或者修改static主机名,修改之后需要重启systemd-hostnamed.service服务。不需重启服务器,注销重新登录即可。
[root@jason ~]#nmcli general help
Usage: nmcli general{ COMMAND | help }
COMMAND := { status| hostname | permissions | logging }
status
hostname [<hostname>]
permissions
logging [level <log level>] [domains<log domains>]
[root@jason ~]#nmcli general hostname test
[root@jason ~]#systemctl restart systemd-hostnamed.service
[root@jason ~]#hostname
test
[root@jason ~]#