转载:http://www.jinbuguo.com/systemd/hostnamectl.html
名称
hostnamectl — 控制系统的主机名
大纲
hostnamectl
[OPTIONS...] {COMMAND}
描述
hostnamectl 可用于查询与修改系统主机名以及其他相关设置。 所谓"主机名",其实有三种不同的含义:
"pretty"主机名, 仅供人类阅读,可以包含各种特殊字符,且无长度限制。 例如"Lennart's Laptop"(必须是UTF-8编码)。 pretty(易读主机名)、chassis(设备类型)、icon(图标名称)存储在 /etc/machine-info
文件中, 详见 machine-info(5) 手册。
"static"主机名,用于在系统启动时设置内核的主机名,仅可包含 "-","a-z","0-9" 字符,且最大不超过64个字符长度。 例如"lennarts-laptop"。此种主机名就是通常所说的"主机名",存储在 /etc/hostname
文件中, 详见 hostname(5) 手册。
"transient"主机名, 是从网络配置中获得的 fallback 主机名, 同样仅可包含 "-","a-z","0-9" 字符, 且最大不超过64个字符长度。 如果存在"static"主机名且不等于"localhost", 那么将忽略"transient"主机名。
可以使用 systemd-firstboot(1) 初始化已挂载(但未启动)的系统镜像的 主机名(hostname)。
选项(OPTIONS)
能够识别的命令行选项如下:
-
--no-ask-password
在执行特权操作时 不向用户索要密码。
-
--static
,--transient
,--pretty
与默认的 status 命令一起使用, 表示仅显示特定的主机名(不可同时使用多个选项)。与 set-hostname 命令一起使用, 表示仅更新特定的主机名(可以同时使用多个选项)。
-
-H
,--host=
操作指定的远程主机。可以仅指定一个主机名(hostname), 也可以使用 "
username@hostname
" 格式。 hostname 后面还可以加上 SSH监听端口(以冒号":
"分隔)与容器名(以正斜线"/
"分隔), 也就是形如 "hostname:port/container
" 的格式, 以表示直接连接到指定主机的指定容器内。 操作将通过SSH协议进行,以确保安全。 可以通过 machinectl -H *HOST
* 命令列出远程主机上的所有容器名称。IPv6地址必须放在方括号([])内。 -
-M
,--machine=
在本地容器内执行操作。 必须明确指定容器的名称。
-
-h
,--help
显示简短的帮助信息并退出。
-
--version
显示简短的版本信息并退出。
命令(COMMAND)
能够识别的命令如下:
-
status
显示当前的主机名及其他相关信息。 如果未指定任何命令,那么这是隐含的默认命令。
-
set-hostname *
NAME
*将系统的主机名设为
NAME
。 如果使用了--static
,--transient
,--pretty
选项, 那么只更新指定的主机名,否则同时更新 pretty, static, transient 三个主机名。 如果在设置 pretty 主机名的同时也设置 static/transient 主机名, 那么 static/transient 主机名将根据如下规则从 pretty 主机名派生而来: 首先将大写字母转换为小写字母,然后删除不在"-","a-z","0-9"范围内的字符。 这样可以确保 static/transient 主机名始终保持与 pretty 主机名一致,同时又不违反自身的命名规则。 如果仅设置 static/transient 主机名,则不会对 pretty 主机名产生任何影响。注意,若设为空字符串, 则表示 将主机名重置为默认值(通常是 "localhost
")。 -
set-icon-name *
NAME
*将系统的图标名设为
NAME
, 某些图形界面的应用程序会根据此设置给主机配上适当的图标。 此名称必须遵守 图标命名规范。注意,若设为空字符串, 则表示将图标名重置为 默认值(通常由"设备类型"决定)。 -
set-chassis *
TYPE
*将系统的设备类型 设为
TYPE
, 某些图形界面的应用程序 会根据此设置切换到合适的人机界面之类。 取值范围如下: "desktop
"(台式机), "laptop
"(笔记本), "convertible
"(折叠本), "server
"(服务器), "tablet
"(平板电脑), "handset
"(智能手机), "watch
"(智能手表), "embedded
"(嵌入式设备), "vm
"(虚拟机), "container
"(容器) 。注意,若设为空字符串, 则表示 将设备类型重置为默认值(通常由主板固件决定)。 -
set-deployment *
ENVIRONMENT
*将系统的部署环境设为
ENVIRONMENT
。 必须设为一个单独的单词且禁止包含任何特殊字符。 建议设为下列单词中的一个: "development
"(开发), "integration
"(综合), "staging
"(阶段), "production
"(生产)注意,若设为空字符串, 则表示将部署环境重置为默认值(同样是空字符串)。 -
set-location *
LOCATION
*将系统的地理位置 设为
LOCATION
。 必须设为一个人类易读字符串, 准确的描述出主机所在的物理位置。 例如: "XX数据中心3楼E23机柜U7
"注意,若设为空字符串, 则表示将地理位置重置为默认值(同样是空字符串)。
退出状态
返回值为 0 表示成功, 非零返回值表示失败代码。
实例
查看hostname信息
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# hostnamectl
Static hostname: iZbp1377m2iy8ro0dbnt1kZ
Icon name: computer-vm
Chassis: vm
Machine ID: 20210521115103731310529363211559
Boot ID: 412ebd43e4cf42c1af239b3d27d25a70
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.25.1.el7.x86_64
Architecture: x86-64
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# hostnamectl status
Static hostname: iZbp1377m2iy8ro0dbnt1kZ
Icon name: computer-vm
Chassis: vm
Machine ID: 20210521115103731310529363211559
Boot ID: 412ebd43e4cf42c1af239b3d27d25a70
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.25.1.el7.x86_64
Architecture: x86-64
帮助信息
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# hostnamectl -h
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
设置主机名
需要注意的是在使用hostnamectl set-hostname
修改主机名时不指定--static
选项则主机名大写字母将自动转换成小写。
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# hostnamectl set-hostname WWW.360BLOGS.TOP
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# cat /etc/hostname
www.360blogs.top
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# hostnamectl --static set-hostname WWW.360BLOGS.TOP
[root@iZbp1377m2iy8ro0dbnt1kZ ~]# cat /etc/hostname
WWW.360BLOGS.TOP
参见
systemd(1), hostname(1), hostname(5), machine-info(5), systemctl(1), systemd-hostnamed.service(8), systemd-firstboot(1)