转载自:https://blog.csdn.net/liumiaocn/article/details/103170673
叙述
这篇文章用于介绍CentOS7下hostname的五种设定方法,虽然很多方式在不同发行版的Linux上均可使用,但在本文中并未一一验证。
确认hostname方法
确认当前机器的名称的命令:hostname
当前机器名称设定的文件:/etc/hostname
当前机器名称相关的环境变量: HOSTNAME
[root@devops ~]# hostname
devops
[root@devops ~]# cat /etc/hostname
devops
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]#
方法1: 使用hostname命令
当前机器名称为devops,使用hostname将其修改为liumiao
[root@devops ~]# hostname liumiao
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]# cat /etc/hostname
devops
[root@devops ~]# hostname
liumiao
[root@devops ~]#
可以看到除了提示符没有改变之外,hostname命令已经发生了变化,再次登录之后此提示信息和HOSTNAME环境变量都会发生变化
[root@liumiao ~]# echo $HOSTNAME
liumiao
[root@liumiao ~]# hostname
liumiao
[root@liumiao ~]# cat /etc/hostname
devops
[root@liumiao ~]#
重启之后,则会恢复修改之前的状态
[root@devops ~]# cat /etc/hostname
devops
[root@devops ~]# hostname
devops
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]#
方法2: 使用hostnamectl命令
命令格式:hostnamectl set-hostname 新名称
执行日志如下所示,可以看到除了PS1的内容之外其他内容都已经实时修改了
[root@devops ~]# hostnamectl set-hostname liumiao
[root@devops ~]# cat /etc/hostname
liumiao
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]# hostname
liumiao
[root@devops ~]#
再次登录之后会发现PS1的信息也已经变化了
[root@liumiao ~]# cat /etc/hostname
liumiao
[root@liumiao ~]# hostname
liumiao
[root@liumiao ~]# echo $HOSTNAME
liumiao
[root@liumiao ~]#
reboot之后也依然不会不会变化。所以hostnamectl基本上就是实时变化并且能够持久保存的方式。
方式3: 修改/etc/hostname
通过修改/etc/hostname文件,也可以达到修改机器名称的目的
[root@liumiao ~]# cat /etc/hostname
liumiao
[root@liumiao ~]# echo $HOSTNAME
liumiao
[root@liumiao ~]# hostname
liumiao
[root@liumiao ~]#
将其修改为devops,然后重启
[root@liumiao ~]# vi /etc/hostname
[root@liumiao ~]# cat /etc/hostname
devops
[root@liumiao ~]# reboot
Shared connection to 127.0.0.1 closed.
liumiaocn:~ liumiao$
再次登录之后可以看到,均已修改过来了
[root@devops ~]# hostname
devops
[root@devops ~]# cat /etc/hostname
devops
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]#
方式4: 使用sysctl修改
命令格式:sysctl kernel.hostname=新名称
sysctl修改kernel下的设定,也可达到相同的效果,执行日志如下所示
[root@devops ~]# hostname
devops
[root@devops ~]# cat /etc/hostname
devops
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]#
[root@devops ~]# sysctl kernel.hostname
kernel.hostname = devops
[root@devops ~]#
[root@devops ~]# sysctl kernel.hostname=liumiao
kernel.hostname = liumiao
[root@devops ~]#
执行之后结果如下所示
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]# cat /etc/hostname
devops
[root@devops ~]# hostname
liumiao
[root@devops ~]#
重新登录之后,可以看到,除了/etc/hostname,HOSTNAME环境变量也发生了变化
[root@liumiao ~]# echo $HOSTNAME
liumiao
[root@liumiao ~]# hostname
liumiao
[root@liumiao ~]# cat /etc/hostname
devops
[root@liumiao ~]#
因为没有持久化保存,所以reboot之后会和第一种方法一样,重新恢复之前的状态。
方法5: 修改/etc/sysconfig/network
通过修改/etc/sysconfig/network,也可以实现修改hostname返回值的效果。比如:
[root@devops ~]# cat /etc/sysconfig/network
# Created by anaconda
[root@devops ~]# vi /etc/sysconfig/network
[root@devops ~]#
[root@devops ~]# cat /etc/sysconfig/network
# Created by anaconda
hostname liumiao.com
[root@devops ~]#
重启network服务之后即可生效
[root@devops ~]# systemctl restart network
[root@devops ~]# hostname
liumiao.com
[root@devops ~]# echo $HOSTNAME
devops
[root@devops ~]#
重新登录之后即可发生变化
[root@liumiao ~]# echo $HOSTNAME
liumiao.com
[root@liumiao ~]# hostname
liumiao.com
[root@liumiao ~]# cat /etc/hostname
devops
[root@liumiao ~]#
实际上hostname有两个选项(-f和-s: -f返回FQDN值,而-s返回shortname),到目前为止的其他方法的设定,此两项的返回值都相同,而此时则返回不同的值。
[root@liumiao ~]# hostname -f
liumiao.com
[root@liumiao ~]# hostname -s
liumiao
[root@liumiao ~]#
重启之后也不会发生变化。