Linux

CentOS7 比之前的版本有了很大的变化。关于最基础的修改主机名这块儿,hostnamectl则是新增加的一个命令,相较于旧版的hostname,新的hostnamectl提供了更加丰富的选项,修改和输出更加便捷易懂。

hostname

现在先回顾一下hostname,该命令的使用方法非常简单。

[root@kylin ~]# hostname alice
[root@kylin ~]# hostname
alice

使用该命令只能临时修改主机名,系统并不会将修改结果写入内核文件,重启以后所有的更改都会失效。要想永久性修改主机名,还需要修改/etc/sysconfig/network文件。

[root@kylin ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=alice
NETWORKING_IPV6=off
ARPCHECK=no

重启系统以后,所做 修改就能实现永久性生效。

hostnamectl

下面切入正题。CentOS 7以后,hostname命令依然存在,但想要通过修改/etc/sysconfig/network文件来实现永久性修改主机名,是起不到任何作用的。7.x新增加了一个/etc/hostname文件(以前是没有的),这时候hostnamectl命令便派上用场了。

参数与选项

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍‌​‌‌‌‌​​‍‌​​‌‌​‌​‍‌​​‌​​​‌‍‌​​​‌​‌‌‍‌​‌‌​​​​‍‌​‌​‌‌​​‍‌‌​​‌​​​‍‌‌​‌​​​‌‍‌​​​​‌‌‌‍​‌‌​​​‌‌‌‌‌​‌​​‍​‌‌​​​​​​​‌​​​‌‍​​‌‌​‌​‌‌​​​‌‌​‍​​​​​‌‌​​​​​‌​​‍​​​​​​‌​​‌​​​​​‍​‌‌​​​‌‌‌​​​‌​​‍​​‌‌​​​‌‌​​​‌​‌‍​‌​‌​‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​‌​​​​‍‌​​​‌‌​​‍‌​​​‌​‌‌‍‌​​‌​​​‌‍‌​​‌‌‌‌​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​​‌‌‌​​‍‌​​​‌​‌‌‍‌​​‌​​‌‌‍​‌​‌​‌‌‌​​​​​‌​‍​‌‌​​​‌​​​‌‌​‌‌‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​‌​​​‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌​​‍‌‌​‌​​‌​‍‌‌​​‌‌​‌‍‌‌​​‌​‌‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌‌​‍‌​​‌​‌​​‍‌​​‌​‌‌​‍‌​​​‌​​​‍‌​​‌​‌‌​‍‌‌​‌​​​‌‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​‌​​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌‌​​‌‌‌​‍‌‌​​‌​‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

查看hostnamectl的帮助文件。

hostnamectl [OPTIONS...] COMMAND ...
Query or change system hostname.
  -h --help              Show this help
     --version           Show package version
     --no-ask-password   Do not prompt for password
  -H --host=[USER@]HOST  Operate on remote host
  -M --machine=CONTAINER Operate on local container
     --transient         Only set transient hostname
     --static            Only set static hostname
     --pretty            Only set pretty hostname
Commands:
  status                 Show current hostname settings
  set-hostname NAME      Set system hostname
  set-icon-name NAME     Set icon name for host
  set-chassis NAME       Set chassis type for host
  set-deployment NAME    Set deployment environment for host
  set-location NAME      Set location for host

先看参数,重点关注下面三个

--transient  瞬态主机名,用来临时分配主机名,效果等同于`hostname alice`
--static  静态主机名,用来在启动时初始化内核的hostname,保存在/etc/hostname中,永久性修改
--pretty  灵活主机名,允许使用特殊字符,临时生效

再来看选项

[root@kylin ~]# hostnamectl status
       Static hostname: kylin
    Transient hostname: status
             Icon name: computer-vm
               Chassis: vm
            Machine ID: 
               Boot ID: 
        Virtualization: kvm
      Operating System: CentOS Linux 7 (Core)
           CPE OS Name: cpe:/o:centos:centos:7
                Kernel: Linux 3.10.0-514.26.2.el7.x86_64
          Architecture: x86-64
  • 修改系统主机名(隐形 —static参数)
[root@kylin ~]# hostnamectl set-hostname alice

一步到位,不用重启立即生效,新开会话重新登录就能看到效果。

  • 修改其他主机名
[root@kylin ~]# hostnamectl set-hostname alice --static
[root@kylin ~]# hostnamectl set-hostname alice --pretty
[root@kylin ~]# hostnamectl set-hostname alice --transient

The End.