在 CentOS 6 中, 修改主机名方式很简单, 临时修改主机名使用 hostname 命令, 永久修改主机名直接写进文件
/etc/sysconfig/network
中即可
但在 CentOS 7 中, 主机名就没那么简单了, 它涉及了一些弯弯绕绕
在 CentOS 7 中, 主机名分 3 类: static(静态主机名)pretty(好看易读的主机名)和 transient(短暂临时的)CentOS 7 中和主机名有关的文件为 / etc/hostname, 它是在系统初始化的时候被读取的, 并且内核根据它的内容设置 transient 主机名
其中:
static 类的主机名就是我们常说的主机名, 由 / etc/hostname 文件决定
transient 类的主机名也就是我们常说的临时主机名, 它是由内核动态维护的主机名默认在系统启动的时候会根据 / etc/hostname 文件中的静态主机名进行初始化
pretty 类的主机名是给人看的, 它可以提供非标准的主机名, 以前版本 (例如 CentOS 6) 没有这功能它可以包含特殊符号, 例如空格例如将 pretty 名称命为 "MaYun's Host", 这种名称在以前的主机名 (即 static 类主机名) 里是不允许存在的
/etc/hostname 文件中的 static 主机名是瞬时生效的, 也是永久生效的修改后使用 hostname 命令或者 uname -n 直接就可以读取, 重启后也按照此文件的主机名进行初始化
/etc/hostname 文件没有主机名的时候, 在系统启动的时候, 内核会将 transient 初始化为
localhost.localdomain
/etc/sysconfig/network 文件已经失效
CentOS 7 主机名修改查看
使用 hostname 命令修改主机名, 它修改是 transient 主机名, 即临时生效的主机名
直接修改 / etc/hostname 文件, 它瞬时生效, 重启后也生效(因为内核会根据它初始化 transient 主机名)
使用 nmtui 命令在图形化界面修改主机名它会直接修改 / etc/hostname 文件, 因此也是瞬时生效 + 永久生效的
使用 hostnamectl 命令它可以修改并查看 statictransient 或 pretty 三种主机名当它修改了 static 主机名时, 会直接写入 / etc/hostname 文件中, 因此它也是瞬时生效 + 永久生效的
hostnamectl 命令
1. 查看主机名
- hostnamectl
- # 或
- hostnamectl status
- # 或
- hostnamectl [--pretty|--static|--transient] status
例如, 当前主机名为 "xuexi.longshuai.com"
- [root@xuexi ~]# uname -n
- xuexi.longshuai.com
- [root@xuexi ~]# hostname name1
- [root@xuexi ~]# hostnamectl
- Static hostname: xuexi.longshuai.com
- Transient hostname: name1
- Icon name: computer-vm
- Chassis: vm
- Machine ID: d13bce5e247540a5b5886f2bf8aabb35
- Boot ID: d34a4222469e4f1cbe20c27aca174e10
- 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
可以看到使用 hostname 命令修改主机名后, transient 已经改变了
2. 同时修改 3 种主机名
当同时修改了 pretty 和 (static | transient) 中的一种时, 将取 pretty 名的简化部分作为 static 主机名
hostnamectl set-hostname NAME
例如:
- [root@xuexi ~]# hostnamectl set-hostname name2
- [root@xuexi ~]# hostname
- name2
- [root@xuexi ~]# cat /etc/hostname
- name2
- [root@xuexi ~]# hostnamectl status
- Static hostname: name2
- Icon name: computer-vm
- Chassis: vm
- Machine ID: d13bce5e247540a5b5886f2bf8aabb35
- Boot ID: d34a4222469e4f1cbe20c27aca174e10
- 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
- [root@xuexi ~]# hostnamectl --pretty
- [root@xuexi ~]#
可以从结果中看到, 只改变了 static 和 transient(内核动态维护的, 一定会改变), 而 pretty 却没设置成功这是因为这里给出的主机名 "name2" 是一个符合主机名标准的名称如果指定一个非标准的主机名, 例如包含特殊符号, 那么也会设置 pretty
例如:
- [root@xuexi ~]# hostnamectl set-hostname "name22 name22"
- [root@xuexi ~]# hostnamectl
- Static hostname: name22name22
- Pretty hostname: name22 name22
- Icon name: computer-vm
- Chassis: vm
- Machine ID: d13bce5e247540a5b5886f2bf8aabb35
- Boot ID: d34a4222469e4f1cbe20c27aca174e10
- 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
pretty hostname 已经改变, 且 static hostname 是它的 "简化版"
3. 修改某种类型的主机名
- hostnamectl set-name NAME --static
- hostnamectl set-name NAME --transient
- hostnamectl set-name NAME --pretty
用法如上面的例子
4. 同时修改其中两种名称
- hostnamectl set-name NAME --static --transient
- hostnamectl set-name NAME --static --pretty
- hostnamectl set-name NAME --transient --pretty
用法如上面的例子但同样注意, 当修改了 pretty 主机名和其他一种时, 将取 pretty 的 "简化版"
5. 修改查看远程主机的主机名, 使用 "-H" 或 "--host" 选项连接基于 SSH
注意, 无法远程修改 CentOS 5 或 6 主机名, 因为它使用的是 systemd 类的命令进行修改的
- hostnamectl -H [USER@]HOST set-hostname NAME
- hostnamectl -H [USER@]HOST status
例如, 使用 root 用户连接到 192.168.100.59 主机上并修改它的主机名
- hostnamectl -H root@192.168.100.59 set-hostname hello59
- hostnamectl -H root@192.168.100.59 status
回到 Linux 系列文章大纲: http://www.cnblogs.com/f-ck-need-u/p/7048359.html
回到网站架构系列文章大纲: http://www.cnblogs.com/f-ck-need-u/p/7576137.html
回到数据库系列文章大纲: http://www.cnblogs.com/f-ck-need-u/p/7586194.html
来源: https://www.cnblogs.com/f-ck-need-u/p/8611558.html