主机名(英语:hostname),也称计算机名,是指分配给计算机的一串唯一标识码,用于在网络上唯一识别该计算机。通常由字母、数字组成,也可以包含一些特殊字符,如英文连字符(-)、英文句点(.)和下划线(_)。典型的主机名最多包含 253 个字符。

在大多数 Linux 发行版中,主机名通常存储在 /etc/hostname 文件中。默认情况下,通过 ssh 命令在终端成功连接到目标服务器时,也可以看到目标服务器的主机名。如以下命令可以看到目标服务器的主机名为 kafka-eagle。

1
2
3
4
5
6
$ ssh hadoop@10.10.18.8
Last login: Fri May 13 20:50:56 2022 from 10.10.18.215

Welcome to Alibaba Cloud Elastic Compute Service !

[hadoop@kafka-eagle ~]$

介绍完主机名的概念,接下来,我们一起了解在 Linux 操作系统中其他各种查找主机名的命令。

使用 hostname 命令

hostname 命令用于显示 Linux 系统的 DNS 名称和主机名。它还允许用户更改或设置主机名。

要在 Linux 中查找主机名,请运行不带任何选项的 hostname 命令:

1
2
$ hostname
kafka-eagle

从输出中可以看到,当前 Linux 系统的主机名是 kafka-eagle

如果要显示完全限定域名(FQDN,Fully Qualified Domain Name),请运行:

1
hostname --fqdn

使用 hostnamectl 命令

hostnamectl 命令用于获取和设置 Linux 系统的主机名及其相关设置。

要显示 Linux 机器的主机名,请运行不带任何选项的 hostnamectl 命令:

1
hostnamectl

输出示例:

1
2
3
4
5
6
7
8
9
10
11
$ hostnamectl
Static hostname: kafka-eagle
Icon name: computer-vm
Chassis: vm
Machine ID: 20200817109743110641424667768813
Boot ID: f650bio8ec6440979b3ac70f8cdbe62b
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1127.19.1.el7.x86_64
Architecture: x86-64

hostname 命令不同,hostnamectl 显示了系统更多的详细信息,例如

  • 系统类型(chassis,笔记本电脑或台式机等,具体值列表:”desktop”, “laptop”, “server”, “tablet”, “handset”, “watch”, “embedded”, “vm”, “container”);
  • 引导和机器 ID(Machine ID、Boot ID);
  • 操作系统信息(Operating System、CPE OS Name);
  • 内核版本(Kernel);
  • 处理器架构(Architecture)等。

如果只显示主机名,请使用 --static 选项:

1
2
$ hostnamectl --static
kafka-eagle

使用 uname 命令

uname 命令用于打印所有系统信息,例如主机名、内核版本、发布版本、操作系统和处理器架构等。

要使用 uname 命令查看主机名,请使用 -n 选项运行它:

1
2
$ uname -n
kafka-eagle

通过 cat 命令读取 /etc/hostname 文件获取主机名

如前所述,在大多数 Linux 发行版中,主机名存储在 /etc/hostname 文件中。要获取 Linux 系统的主机名,只需显示 /etc/hostname 文件的内容:

1
2
$ cat /etc/hostname
kafka-eagle

上面这些命令是在 Linux 中最常用的查找主机名的命令。下面列出的这些则是不常见的命令,以供参考。

使用 nmcli 命令

nmcli 命令用于控制 NetworkManager 并报告网络状态。使用 nmcli,我们可以创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。

要使用 nmcli 命令检查 Linux 系统的主机名,请运行以下命令:

1
2
$ nmcli general hostname
kafka-eagle

使用 sysctl 命令

sysctl 命令用于在运行时列出和修改内核参数。

我们可以使用下面的 sysctl 命令行打印 Linux 系统的主机名:

1
2
$ sysctl kernel.hostname
kernel.hostname = kafka-eagle

使用 ProcFS 查找 Linux 中的主机名

Proc 文件系统(或简称 procfs)是由 Linux 内核维护的虚拟文件系统。它有时也被称为进程信息伪文件系统。它不包含“真实”文件,但包含运行时系统信息,例如系统内存、挂载的设备、硬件配置等。所有这些信息都可以在 Linux 中名为 /proc 的特殊目录下找到。

要使用 prcfs 确定 Linux 的主机名,请运行:

1
2
$ cat /proc/sys/kernel/hostname
kafka-eagle

小结

本文介绍了什么是主机名及如何查看 Linux 系统主机名的不同方法。

  • 分配给计算机的一串唯一标识码,用于在网络上唯一识别该计算机;
  • 由字母、数字、英文连字符、英文句点和下划线组成[A-Z, a-z, 0-9, -_.];
  • 典型的主机名最多包含 253 个字符。

查看 Linux 系统主机名常用方法:

  • hostname
  • hostnamectl
  • uname -n
  • cat /etc/hostname

不常用方法:

  • nmcli general hostname
  • sysctl kernel.hostname
  • cat /proc/sys/kernel/hostname

(END)