在CentOS 6中,修改主機名方式很簡單,臨時修改主機名使用hostname
命令,永久修改主機名直接寫進文件/etc/sysconfig/network
中便可。centos
但在CentOS 7中,主機名就沒那麼簡單了,它涉及了一些彎彎繞繞。bash
在CentOS 7中,主機名分3類:static(靜態主機名)、pretty(好看、易讀的主機名)和transient(短暫臨時的)。CentOS 7中和主機名有關的文件爲/etc/hostname
,它是在系統初始化的時候被讀取的,而且內核根據它的內容設置transient主機名。dom
其中:ui
- static類的主機名就是咱們常說的主機名,由/etc/hostname文件決定。
- transient類的主機名也就是咱們常說的臨時主機名,它是由內核動態維護的主機名。默認在系統啓動的時候會根據/etc/hostname文件中的靜態主機名進行初始化。
- pretty類的主機名是給人看的,它能夠提供非標準的主機名,之前版本(例如CentOS 6)沒有這功能。它能夠包含特殊符號,例如空格。例如將pretty名稱命爲"MaYun's Host",這種名稱在之前的主機名(即static類主機名)裏是不容許存在的。
/etc/hostname文件中的static主機名是瞬時生效的,也是永久生效的。修改後使用hostname
命令或者uname -n
直接就能夠讀取,重啓後也按照此文件的主機名進行初始化。spa
/etc/hostname文件沒有主機名的時候,在系統啓動的時候,內核會將transient初始化爲localhost.localdomain
。code
/etc/sysconfig/network文件已經失效。it
CentOS 7主機名修改、查看
- 使用
hostname
命令修改主機名,它修改是transient主機名,即臨時生效的主機名。 - 直接修改/etc/hostname文件,它瞬時生效,重啓後也生效(由於內核會根據它初始化transient主機名)。
- 使用
nmtui
命令在圖形化界面修改主機名。它會直接修改/etc/hostname文件,所以也是瞬時生效+永久生效的。 - 使用
hostnamectl
命令。它能夠修改並查看static、transient或pretty三種主機名。當它修改了static主機名時,會直接寫入/etc/hostname文件中,所以它也是瞬時生效+永久生效的。
hostnamectl命令
1.查看主機名io
hostnamectl #或 hostnamectl status #或 hostnamectl [--pretty|--static|--transient] status
例如,當前主機名爲"xuexi.longshuai.com"。class
[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已經改變了。network
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