Linux修改主机名(静态主机名、临时主机名)

本文详细介绍了在Linux系统中如何修改主机名,包括临时主机名和永久主机名的修改方法。区分了静态主机名、临时主机名及pretty主机名的概念,并提供了具体的命令行操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

通常情况下Linux在安装时会设置主机名、root密码等相关参数,但安装后的使用过程中或许你需要修改主机名,本文讲述如何修改主机名,包括临时修改和永久修改。

查看主机名

原生态的Linux一般自带两个命令:hostname、hostnamectl用于查看(也可修改)主机名,如下:

[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)

  1. The high-level "pretty" hostname which might include all kinds of special characters (e.g. "Lennart's Laptop");--pretty主机名对字符几乎没有限制,可以设置为你喜欢的任意主机名;
  2. The static hostname which is used to initialize the kernel hostname at boot (e.g. "lennarts-laptop");--静态主机名用于系统启动时设置内核参数;存储于/etc/hostname中。
  3. The transient hostname which is a default received from network configuration. If a static hostname is set, and is valid (something other than localhost), then the transient hostname is not used.—临时主机名默认从网络配置中获取,如果静态主机名生效,则临时主机名没用。

修改临时主机名

  1. 通过查看hostname的man手册,我们可以看到hostname本身自带选项可以修改主机名。

hostname [-b|--boot] [-F|--file filename] [hostname]

于是,我们用此命令尝试,

[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>#

解释:

         由上面hostnamectl的显示信息可知,hostname只改变了Transient hostname(临时主机名)。其原理就是临时修改了/proc/sys/kernel/hostname文件(可以用cat /proc/sys/kernel/hostname查看),懂内核的或许就知道,其文件是Linux系统启动时生成的虚拟文件(proc文件系统),系统重启后此hostname又将以静态hostname覆盖。

修改静态主机名

前面讲述了如何修改临时主机名及其原理,但是修改后系统重启又将回到原来的主机名。若想修改主机名永久生效,就需要修改静态主机名配置文件:/etc/hostname,如下图所示:本来的我的主机名为xygzavier01kf,修改后重启变成zavier2

原理:/etc/hostname 是主机名的配置文件,Linux系统启动时去读取此文件内容,设置静态主机名和相关内核参数。

/etc/hosts、/etc/sysconfig/network的作用

有一些文章提到修改主机名是通过修改以上两个文件实现,今天测试一下,其实不然。

/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

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值