欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Linux 常用命令 -hostnamectl【主机名控制】

Linux 常用命令 -hostnamectl【主机名控制】

2025/5/17 20:19:14 来源:https://blog.csdn.net/Cris_Jay/article/details/147959418  浏览:    关键词:Linux 常用命令 -hostnamectl【主机名控制】

简介

hostnamectl 命令中的 “hostname” 顾名思义,指的是计算机在网络上的名称,“ctl” 是 “control” 的缩写,意味着控制。hostnamectl 命令用于查询和修改系统主机名以及相关的设置。它通过与 systemd 系统管理器交互,允许用户以简单的方式管理主机名,而无需直接编辑配置文件。主机名在网络中用于标识设备,方便用户和服务进行通信和识别。

使用方式

hostnamectl [OPTIONS...] {COMMAND}

常用选项

  • --no-ask-password:执行需要管理权限的操作时,不再提示用户输入密码认证。

  • --static, --transient, --pretty:当用 status 命令(或未指定具体命令)时,如果指定了其中某个选项,hostnamectl 会只显示对应种类的主机名。

    如果将它们与 set-hostname 命令一起使用,则只会更新选中的相应主机名。如果同时使用多个(>1)此类选项,则所有指定的主机名类型都会被更新。

  • -H, --host=:使用该选项可以远程执行操作。通过指定要连接的主机名,或者采用 “用户名@主机名” 的格式进行远程主机的连接。主机名后可以附加 SSH 监听端口号,用冒号分隔;若后面再跟上容器名(以斜杠 / 分隔),则直接连接到指定主机上的某个容器。此处使用 SSH 建立通信。如果要列出容器名,可以使用 machinectl -H HOST。若是 IPv6 地址,需要用 [] 括起来。

  • -M, --machine=:在本地机器上执行操作。指定一个容器名来进行连接。可以选择在其前面加上用户名和一个 @ 字符来指定连接用户。如果使用特殊字符串 .host 代替容器名称,则会建立与本地系统的连接(这对于连接到特定用户的用户总线很有用:--user --machine=lennart@.host)。 如果未使用 @ ,则以 root 用户身份建立连接。 如果使用 @ ,则可以省略左侧或右侧(但不能同时省略),在这种情况下,将假定为本地用户名和 .host

  • -h, --help:显示帮助信息。

  • --version:显示版本信息。

  • --json=MODE:以 JSON 格式输出信息。MODEshortprettyoff,分别表示尽可能简短的输出,不包含任何冗余的空格或换行符、美观的格式化版本,带有缩进和换行符以及关闭 JSON 输出(默认)。

命令

  • status: 显示系统主机名和相关信息。 如果没有指定命令,则默认执行此命令。

  • hostname [NAME]:如果没有提供参数,则显示系统主机名。 如果提供可选参数 NAME,则将系统主机名更改为 NAME。默认情况下,这将同时更改 pretty hostnamestatic hostnametransient hostname;但是,如果使用了一个或多个 --static--transient--pretty 中的选项,则只会更改选定的主机名。

    如果要设置 pretty hostname,并且同时设置 statictransient hostname,则在更新后者之前,将简化指定的主机名,使其符合所使用的字符集。 这是通过删除特殊字符和空格来完成的。 这确保了 pretty hostnamestatic hostname 始终紧密相关,同时仍然遵循特定名称的有效性规则。如果仅设置 transient 和/或 static hostname,而未涉及 pretty hostname,则不会简化主机名字符串。

    static hostnametransient hostname 必须分别是单个 DNS 标签(一个由 7 位 ASCII 小写字符组成的字符串,没有空格或点,限制为 DNS 域名标签允许的格式),或者是由单个点分隔的此类标签序列,形成有效的完整域名。 主机名最多只能有 64 个字符,这是 Linux 限制(DNS 允许更长的名称)。

  • icon-name [NAME]:如果不带参数,则显示系统的图标名称。如果提供可选参数 NAME,则将图标名称更改为 NAME。图标名称供某些图形应用程序用于可视化显示此主机。

  • chassis [TYPE]:如果不带参数,则显示机箱类型。 如果提供可选参数 TYPE,则将机箱类型更改为 TYPE。机箱类型供某些图形应用程序用于可视化主机或更改用户交互。当前,定义了以下机箱类型: desktop(台式机)、laptop(笔记本电脑)、convertible(二合一电脑)、server(服务器)、tablet(平板电脑)、handset(手机)、watch(手表)、embedded(嵌入式)。 此外,还有特殊的机箱类型 vm(虚拟机)和 container(容器),用于缺乏物理机箱的虚拟化系统。

  • deployment [ENVIRONMENT]:如果不带参数,则显示部署环境。 如果提供可选参数 ENVIRONMENT,则将部署环境更改为 ENVIRONMENTENVIRONMENT 必须是一个不包含任何控制字符的单词。 建议使用以下值之一: development(开发)、integration(集成)、staging(预发布)、production(生产)。

  • location [LOCATION]:如果不带参数,则显示系统的位置字符串。 如果提供可选参数 LOCATION,则将系统的位置字符串更改为 LOCATIONLOCATION 应该是一个人类友好的、自由格式的字符串,用于描述系统的物理位置(如果已知且适用)。 它可以像 Berlin, Germany(德国,柏林)这样通用,也可以像 Left Rack, 2nd Shelf(左侧机架,第二层)这样具体。

返回值

成功执行返回 0,失败返回一个非零错误码。

参考示例

显示当前的主机信息

hostnamectl status

使用 status 命令可以显示系统主机名及相关信息:

jay@jaylinuxlenovo:~/test$ hostnamectl statusStatic hostname: jay-homeIcon name: computer-laptopChassis: laptopDeployment: aMachine ID: 8e0c9a****************9024baeb91Boot ID: 2b0874****************661a844b6d
Operating System: Ubuntu 22.04.5 LTS              Kernel: Linux 5.15.0-131-genericArchitecture: x86-64Hardware Vendor: LenovoHardware Model: Lenovo G50-80

只查看系统主机名

hostnamectl hostname 

使用 hostname 不加参数可以单独查看主机名这一项:

jay@jaylinuxlenovo:~/test$ hostnamectl hostname 
jay-home

设置系统主机名

hostnamectl hostname new-hostname

使用 hostname 加参数可以将主机名设置成指定参数中的名称,注意该操作会需要权限:

jay@jaylinuxlenovo:~/test$ hostnamectl hostname new-hostname
==== AUTHENTICATING FOR org.freedesktop.hostname1.set-static-hostname ===
Authentication is required to set the statically configured local hostname, as well as the pretty hostname.
Authenticating as: jay
Password: 
==== AUTHENTICATION COMPLETE ===
jay@jaylinuxlenovo:~/test$ hostnamectl hostname 
new-hostname

使用 JSON 格式输出主机信息

hostnamectl status --json=pretty

加入 --json 选项就可以将信息以 JSON 格式输出。此处我使用 pretty 模式可以显示得更友好:

jay@jaylinuxlenovo:~/test$ hostnamectl status --json=pretty
{"Hostname" : "jay-home","StaticHostname" : "jay-home","PrettyHostname" : null,"DefaultHostname" : "localhost","HostnameSource" : "static","IconName" : "computer-laptop","Chassis" : "laptop","Deployment" : "a","Location" : null,"KernelName" : "Linux","KernelRelease" : "5.15.0-131-generic","KernelVersion" : "#141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025","OperatingSystemPrettyName" : "Ubuntu 22.04.5 LTS","OperatingSystemCPEName" : null,"OperatingSystemHomeURL" : "https://www.ubuntu.com/","HardwareVendor" : "Lenovo","HardwareModel" : "Lenovo G50-80","ProductUUID" : null
}

注意事项

  • 修改主机名通常需要 root 或具有 sudo 权限的用户。
  • 在某些系统上,修改主机名后可能需要重启系统或重启网络服务才能使更改完全生效。建议在修改主机名后重启系统。
  • hostnamectl 区分的三种不同的主机名分别为 pretty hostname:一个用户友好的主机名,可以包含各种特殊字符(例如:“Lennart’s Laptop”)、static hostname:用户配置的主机名(例如:“lennarts-laptop”) 以及 transient hostname:备用值,通常从网络配置中获取(例如:“node12345678”)。
  • 如果设置了有效的 static hostname ,则不会使用 transient hostname。
  • pretty hostname 对使用的字符和长度几乎没有限制,而 static hostname 和 transient hostname 则限制为通常接受的 Internet 域名字符,并且最大长度为 64 个字符。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词