侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux hostnamectl命令教程:如何查询和更改主机名和相关设置(附实例详解和注意事项)

Linux hostnamectl命令介绍

hostnamectl命令是用来查询和更改主机名和相关设置的工具。它是systemd的一部分,可以控制三种不同类型的主机名:静态主机名、瞬态主机名和漂移主机名。静态主机名是系统启动时从/etc/hostname文件中读取的,通常由系统管理员设置。瞬态主机名是在运行时动态分配的,可以由DHCP或mDNS服务器提供。漂移主机名是用于网络地址解析的主机名,可以由DNS服务器或NIS服务器提供。hostnamectl命令可以显示和修改这三种主机名,以及其他一些与主机相关的信息,如内核版本、操作系统版本、机器ID等。

Linux hostnamectl命令适用的Linux版本

hostnamectl命令是systemd的一部分,因此只适用于使用systemd作为初始化系统的Linux发行版。一些常见的使用systemd的Linux发行版有:Arch Linux、CentOS 7/8、Debian 8/9/10、Fedora、openSUSE、Ubuntu 15.04及以后版本等。如果你的Linux发行版不使用systemd,你可以使用其他的命令来查询和更改主机名,如hostname、uname、cat /etc/hostname等。如果你想在不使用systemd的Linux发行版上安装和使用hostnamectl命令,你可以尝试从源代码编译和安装systemd,但这可能会导致一些不兼容或冲突的问题,所以不建议这样做。

Linux hostnamectl命令的基本语法

hostnamectl命令的基本语法格式如下:

hostnamectl [OPTIONS...] {COMMAND}

其中,OPTIONS是一些可选的参数,用来控制命令的行为或输出格式。COMMAND是要执行的操作,可以是以下之一:

  • status:显示当前的主机名和相关信息,这是默认的操作,如果不指定任何COMMAND,就会执行这个操作。
  • set-hostname NAME:设置静态主机名为NAME,需要root权限。
  • set-icon-name NAME:设置主机的图标名称为NAME,需要root权限。
  • set-chassis NAME:设置主机的机箱类型为NAME,需要root权限。
  • set-deployment NAME:设置主机的部署环境为NAME,需要root权限。
  • set-location NAME:设置主机的位置为NAME,需要root权限。

Linux hostnamectl命令的常用选项或参数说明

hostnamectl命令的常用选项或参数有以下几个:

选项参数说明
-h, --help显示帮助信息
--version显示版本信息
--no-ask-password不提示输入密码
--transient只设置瞬态主机名
--static只设置静态主机名
--pretty只设置漂移主机名
--no-convert不转换主机名的大小写或特殊字符

Linux hostnamectl命令的实例

下面是一些使用hostnamectl命令的常见实例:

实例1:查看当前的主机名和相关信息

命令:

[linux@bashcommandnotfound.cn ~]$ hostnamectl

输出:

   Static hostname: bashcommandnotfound.cn
   Icon name: computer-laptop
   Chassis: laptop
   Machine ID: 7f0e0a3c9a4c4c6f9f0e0a3c9a4c4c6f
   Boot ID: 7f0e0a3c9a4c4c6f9f0e0a3c9a4c4c6f
Operating System: CentOS Linux 8
     CPE OS Name: cpe:/o:centos:centos:8
          Kernel: Linux 4.18.0-240.1.1.el8_3.x86_64
    Architecture: x86-64

注释:这个命令会显示当前的静态主机名、图标名称、机箱类型、机器ID、启动ID、操作系统版本、内核版本和架构等信息。

实例2:设置静态主机名为linux.cn

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl set-hostname linux.cn

输出:无

注释:这个命令会将静态主机名设置为linux.cn,并将其写入到/etc/hostname文件中。需要root权限才能执行这个命令。执行完这个命令后,可以用hostname或hostnamectl status命令来查看新的主机名。

实例3:设置瞬态主机名为linux.com

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl --transient set-hostname linux.com

输出:无

注释:这个命令会将瞬态主机名设置为linux.com,但不会修改/etc/hostname文件。需要root权限才能执行这个命令。执行完这个命令后,可以用hostname或hostnamectl status命令来查看新的主机名。瞬态主机名只在当前的会话中有效,重启后会失效。

实例4:设置漂移主机名为linux.org

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl --pretty set-hostname linux.org

输出:无

注释:这个命令会将漂移主机名设置为linux.org,但不会修改/etc/hostname文件。需要root权限才能执行这个命令。执行完这个命令后,可以用hostname或hostnamectl status命令来查看新的主机名。漂移主机名只在当前的会话中有效,重启后会失效。

实例5:同时设置静态、瞬态和漂移主机名为linux.net

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl set-hostname linux.net

输出:无

注释:这个命令会将静态、瞬态和漂移主机名都设置为linux.net,并将静态主机名写入到/etc/hostname文件中。需要root权限才能执行这个命令。执行完这个命令后,可以用hostname或hostnamectl status命令来查看新的主机名。

实例6:设置主机的图标名称为computer-server

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl set-icon-name computer-server

输出:无

注释:这个命令会将主机的图标名称设置为computer-server,这个名称可以用来表示主机的类型或用途。需要root权限才能执行这个命令。执行完这个命令后,可以用hostnamectl status命令来查看新的图标名称。

实例7:设置主机的机箱类型为rack

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl set-chassis rack

输出:无

注释:这个命令会将主机的机箱类型设置为rack,这个类型可以用来表示主机的物理形态。需要root权限才能执行这个命令。执行完这个命令后,可以用hostnamectl status命令来查看新的机箱类型。

实例8:设置主机的部署环境为production

命令:

[linux@bashcommandnotfound.cn ~]$ sudo hostnamectl set-deployment production

输出:无

注释:这个命令会将主机的部署环境设置为production,这个环境可以用来表示主机的用途或状态,比如开发、测试、生产等。需要root权限才能执行这个命令。执行完这个命令后,可以用hostnamectl status命令来查看新的部署环境。

Linux hostnamectl命令的注意事项

使用hostnamectl命令时,有以下几点需要注意:

  • 如果你的Linux发行版不使用systemd,你可能无法使用hostnamectl命令,你可以用其他的命令来查询和更改主机名,如hostname、uname、cat /etc/hostname等。
  • 如果你想修改静态主机名,你需要root权限,否则你可能会遇到Failed to set static hostname: Access denied的错误。
  • 如果你想修改瞬态或漂移主机名,你需要确保你的网络服务支持这些功能,否则你可能会遇到Could not set property: Failed to activate service 'org.freedesktop.hostname1': timed out的错误。
  • 如果你修改了主机名,你可能需要重新启动你的网络服务或重启你的系统,才能让新的主机名生效。
  • 如果你在执行hostnamectl命令时遇到bash: hostnamectl: command not found的错误,你可能需要安装systemd包,或者检查你的PATH环境变量是否包含了/usr/bin目录。

Linux hostnamectl相关命令

hostnamectl命令与以下几个命令有一定的关联或相似性,你可以点击链接查看更多的介绍:

0

评论区