教你在Linux中修改主机名
前言
何谓主机名?

简单来说如上图,红框地方所示的localhost就是默认的主机名。
这是这篇文章的直接和根本目的
简介
我们知道,无论是在局域网还是公网上,每台主机都有一个IP地址,其作用是为了区分彼此,也就是说IP地址相当于主机的门牌号,通过门牌号可以找到对应的主机。
但IP地址有一点不好,就是不方便记忆,所以才有了域名。
当然,域名一般(有时候局域网也会通过修改hosts文件设置域名供内部访问)只在在公网(INTERNET)中存在,每个域名都对应一个IP地址,每个IP可以有多个对应的域名。
那么上面说了半天,我们的主角“主机名”又是用于什么的呢?
既然公网有区分了,那局域网肯定也要有啊。
在一个局域网中,每台机器都有一个主机名,用于主机与主机之间的区分。
我们可以通过为每台机器设置容易记忆和理解的主机名,来达到容易访问别人的目的。
当然,在目前的云服务器中,更多的只是为了自己看着终端舒服

说明
这里因为我服务器常用的是CentOS,就以CentOS8来说明。
如果手上没有测试环境的,可以参考我之前的两篇文章:
哎呀,突然想弄个Linux centos 8系统玩玩,怎么办?
聊一聊VMware16的centos8与Win10的Xshell碰撞
又因为CentOS7开始,新增了一个 hostnamectl 命令,所以下面我会分 CentOS7之后 和 Centos7之前 两个方面演示说明。
CentOS7之前
一、查看当前主机名
通过 uname 和 hostname 命令都可查看

从图中,可以看出,我目前的主机名是 localhost.localdomain,命令提示符前面的 localhost 只是简写。
二、通过hostname命令来临时修改
命令格式:hostname newhostname
注意:这个只能暂时修改主机名,用logout命令登出并重新登陆即可生效。但不是永久生效。

修改

logout登出

重新登录连接,可以看到,上图红框内容,已经修改成功了。
三、通过配置文件/etc/sysconfig/network 修改

进入后,填写内容:
NETWORKING=yes
HOSTNAME=主机名

保存退出,但是要下次重启之后才能生效(如果你想现在立马就生效,那就在使用hostname设置下)。
CentOS7之后
那就简单了,直接一个 hostnamectl 命令即可搞定。

通过图中可以看到,我们使用了
hostnamectl set-hostname ‘技术好奇心’
命令来设置主机名,然后通过 hostnamectl 打印查看当前的主机名状态。
但是为啥状态结果中有个Pretty hostname已经改变了,Pretty hostname 和 Transient hostname 却没改变呢?还有,为啥有三个hostname????

先别急,我们再来修改一下试试:

是不是很奇怪?
这次结果中没有Pretty hostname 和 Transient hostname ,仅剩 Static hostname了。
注:命令提示符前面之所以还是 jishuhaoqixin ,是因为这里为了节约时间我没有reboot重启,大家可以自行测试下。

哈哈,不卖关子了,之所以会发生这种情况,我们还要从CentOS7中定义的三种主机名说起。
CentOS7中定义的三种主机
在CentOS7中有三种定义的主机名:
1、静态的(static):静态主机名也称为内核主机名,是系统在启动时从/etc/hostname内自动初始化的主机名。
2、瞬态的(transient):瞬态主机名是在系统运行时临时分配的主机名。
3、灵活的(pretty):灵活主机名则允许使用特殊字符的主机名。
看到没?我们上面使用 hostnamectl 第一次是不是设置的 技术好奇心,对于英文来说,妥妥的特殊字符吧?而第二次 haoqixin ,就没这个问题,直接设置了 static。
相关推荐
-
PHP8种变量类型的详细讲解2025-02-22 00:32:24
-
php+apache 和 php+nginx的区别2025-02-22 00:21:27
-
PHP:与workerman结合实现定时任务2025-02-22 00:15:57
-
Nginx的Rewrite规则与实例2025-02-22 00:15:39
-
MySql中身份证字段的简单脱敏介绍2025-02-22 00:15:36