CentOS上修改主机名的方法

2016.10.23 0 条评论 1.56k 次阅读 0 人点赞

前几天做实验,发现CentOS7主机名的配置文件和之前版本的CentOS不一样了,在CentOS4/5/6中主机名对应的配置文件一直是是/etc/sysconfig/network,而在CentOS7中该文件是/etc/hostname,下面总结一下不同CentOS版本修改主机名的方法。

方法一:hostname命令

hostname命令可以临时修改主机名,且在CentOS等Linux发行版和很多Unix操作系统上都可以使用该命令:

[root@jianxiangqiao ~]# hostname centos6_8.jianxiangqiao.com
//查看主机名:
[root@jianxiangqiao ~]# hostname
centos6_8.jianxiangqiao.com
//重新登录查看提示符PS1的变化:
[root@jianxiangqiao ~]# su - root
[root@centos6_8 ~]# 

在CentOS4/5/6上hostname命令属于net-tools软件包,CentOS7上属于hostname软件包:

//CentOS6.8:
[root@centos6_8 ~]# yum provides */hostname
......
net-tools-1.60-110.el6_2.x86_64 : Basic networking tools
Repo        : installed
Matched from:
Filename    : /bin/hostname
//CentOS7.2:
[root@centos7_2 ~]# yum provides */hostname
......
hostname-3.13-3.el7.x86_64 : Utility to set/show the host name or domain name
Repo        : @anaconda
Matched from:
Filename    : /bin/hostname

方法二:修改主机名配置文件

CentOS4/5/6中主机名的配置文件是/etc/sysconfig/network,修改文件中的“HOSTNAME”变量即可修改主机名,重启后生效:

[root@jianxiangqiao ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6_8.jianxiangqiao.com

CentOS7中主机名的配置文件是/etc/hostname,修改文件内容即可修改主机名,且修改立即永久生效,暂时还没找到是哪个进程在实时监控/etc/hostname文件的修改,不过该文件属于systemd软件包,应该和systemd有关:

[root@jianxiangqiao ~]# echo "centos7_2.jianxiangqiao.com" > /etc/hostname
[root@jianxiangqiao ~]# hostname
centos7_2.jianxiangqiao.com
[root@centos7_2 ~]# yum provides /etc/hostname
......
systemd-219-19.el7.x86_64 : A System and Service Manager
Repo        : @anaconda
Matched from:
Filename    : /etc/hostname

方法三:hostnamectl set-hostname命令

hostnamectl命令仅适用于CentOS7,该命令属于systemd软件包,且修改立即永久生效:

[root@jianxiangqiao ~]# hostnamectl set-hostname centos7_2.jianxiangqiao.com
[root@jianxiangqiao ~]# hostname
centos7_2.jianxiangqiao.com
[root@centos7_2 ~]# yum provides hostnamectl
......
systemd-219-19.el7.x86_64 : A System and Service Manager
Repo        : @anaconda
Matched from:
Filename    : /usr/bin/hostnamectl

方法四:修改/proc中的hostname文件

修改/proc文件系统中的hostname文件可以达到临时修改主机名的目的,效果和hostname命令一样,且在CentOS4/5/6/7上都相同:

[root@jianxiangqiao ~]# echo "centos6_8.jianxiangqiao.com">/proc/sys/kernel/hostname
[root@jianxiangqiao ~]# hostname
centos6_8.jianxiangqiao.com

方法五:修改内核参数kernel.hostname

修改Linux内核参数kernel.hostname可以临时修改主机名,效果和hostname命令一样,且在CentOS4/5/6/7上都相同:

[root@jianxiangqiao ~]# sysctl kernel.hostname=centos6_8.jianxiangqiao.com
kernel.hostname = centos6_8.jianxiangqiao.com
[root@jianxiangqiao ~]# hostname
centos6_8.jianxiangqiao.com

总结

上面提到的五种CentOS主机名的修改方法,其中hostname命令、/proc中的hostname文件、内核参数kernel.hostname只能临时修改主机名,重启后失效;修改CentOS4/5/6的/etc/sysconfig/network文件重启后生效;修改CentOS7的主机名配置文件/etc/hostname、hostnamectl命令立即且永久生效。
临时修改主机名推荐使用hostname命令,CentOS4/5/6上永久修改主机名直接修改/etc/sysconfig/network文件,CentOS7永久修改主机名推荐使用hostnamectl set-hostname命令。

PS:为什么CentOS4/5/6上修改主机名配置文件重启后生效?且看CentOS4/5/6的rc.sysinit初始化文件:

[root@centos6_8 ~]# vi /etc/rc.d/rc.sysinit 
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#

HOSTNAME=$(/bin/hostname)

set -m

if [ -f /etc/sysconfig/network ]; then
    . /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
    HOSTNAME=localhost
fi
......

该文件只有在系统启动的时候执行一次,所以只有开机的时候才会读取主机名配置文件/etc/sysconfig/network,因此重启后生效。

健翔桥的奇迹

IT工程师/摄影历史/跑步骑行