一般状况下Linux在安装时会设置主机名、root密码等相关参数,但安装后的使用过程当中或许你须要修改主机名,本文讲述如何修改主机名,包括临时修改和永久修改。html
原生态的Linux通常自带两个命令:hostname、hostnamectl用于查看(也可修改)主机名,以下:linux
[root@zavier2 ~]<20180919 11:18:05># hostname zavier2 [root@zavier2 ~]<20180919 11:18:08># hostnamectl Static hostname: zavier2 Icon name: computer-vm Chassis: vm Machine ID: e3db3fd526054e28be654ab8fd75d995 Boot ID: 1ad233c0110e4035b14e13729677b7e0 Virtualization: vmware Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo) CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server Kernel: Linux 3.10.0-327.36.3.el7.x86_64 Architecture: x86-64
基于上面命令,咱们能够进一步思考是否能够修改主机名呢?是否用hostname、hostnamectl这两条命令就能修改主机名呢。其实,Linux主机名分为静态主机名(static hostname)、临时主机名(transient hostname)以及pretty 主机名(理解为:优雅的主机名),下面将详细介绍其区别:(摘自man hostnamectl)网络
经过查看hostname的man手册,咱们能够看到hostname自己自带选项能够修改主机名。测试
hostname [-b|--boot] [-F|--file filename] [hostname]
因而,咱们用此命令尝试,spa
[root@omp-xygkt01kf ~]<20180919 10:22:05># echo $HOSTNAME omp-xygkt01kf [root@omp-xygkt01kf ~]<20180919 10:22:09># hostname testname [root@omp-xygkt01kf ~]<20180919 10:22:21># cat /proc/sys/kernel/hostname testname [root@omp-xygkt01kf ~]<20180919 10:22:25># hostname testname [root@omp-xygkt01kf ~]<20180919 10:22:28># hostnamectl Static hostname: omp-xygkt01kf Transient hostname: testname Icon name: computer-vm Chassis: vm Machine ID: e3db3fd526054e28be654ab8fd75d995 Boot ID: 811ad648437a4884bfef8d36824d2f55 Virtualization: vmware Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo) CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server Kernel: Linux 3.10.0-327.36.3.el7.x86_64 Architecture: x86-64 [root@omp-xygkt01kf ~]<20180919 10:23:02>#
解释:3d
由上面hostnamectl的显示信息可知,hostname只改变了Transient hostname(临时主机名)。其原理就是临时修改了/proc/sys/kernel/hostname文件(能够用cat /proc/sys/kernel/hostname查看),懂内核的或许就知道,其文件是Linux系统启动时生成的虚拟文件(proc文件系统),系统重启后此hostname又将以静态hostname覆盖。code
前面讲述了如何修改临时主机名及其原理,可是修改后系统重启又将回到原来的主机名。若想修改主机名永久生效,就须要修改静态主机名配置文件:/etc/hostname,以下图所示:原本的个人主机名为xygzavier01kf,修改后重启变成zavier2server
原理:/etc/hostname 是主机名的配置文件,Linux系统启动时去读取此文件内容,设置静态主机名和相关内核参数。htm
有一些文章提到修改主机名是经过修改以上两个文件实现,今天测试一下,其实否则。blog
/etc/hosts是配置主机名静态查询表,主要是用于网络访问访问域名时的地址映射。其配置包括三部分:
IP地址 主机名 主机名别名
/etc/sysconfig/network对针对本计算机的,是给计算机起的一个名字,是计算机的一个标识。
针对静态主机名的修改,并非全部的Linux发行版都有/etc/hostname文件,本人的系统(redhat 7.2)是经过此文件配置,读者在设置本身的主机名时,必定要琢磨各类类型主机名、各类命令(hostname、systemctl等)、各类内核参数的尝试。直到获得本身满意的答案。本人系统信息以下:
[root@zavier2 ~]<20180919 11:29:59># uname -a Linux zavier2 3.10.0-327.36.3.el7.x86_64 #1 SMP Thu Oct 20 04:56:07 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux