1. 命令简介
hostname 命令用于显示或临时设置 Linux 系统的主机名。主机名是用于在网络中标识一台计算机的名称。
重要说明:
系统的环境变量 HOSTNAME 通常存储了当前的主机名。 使用 hostname 命令设置的主机名是临时生效的,系统重启后将恢复为配置文件中的主机名。 如需永久修改主机名,通常需要编辑 /etc/hostname 文件(在某些发行版中可能是 /etc/sysconfig/network),并同步更新 /etc/hosts 文件,然后重启系统。更现代和推荐的方法是使用 hostnamectl 命令(systemd 系统)进行永久修改。
2. 语法格式
基本语法
bash
运行
# 显示主机名或相关信息
hostname [选项]
# 设置主机名
hostname [选项] <新主机名>
# 从文件读取并设置主机名
hostname -F <文件名>
# 显示版本或帮助信息
hostname -V, --version
hostname -h, --help
相关命令 domainname, nisdomainname, ypdomainname: 显示或设置 NIS (Network Information Service) 域名。 dnsdomainname: 显示系统的 DNS 域名。
3. 常用选项及说明
表格
| 选项 | 长格式 | 说明 |
|---|---|---|
-a | --alias | 显示主机的别名(如果已设置)。 |
-A | --all-fqdns | 列出本机所有配置了网络接口的完全限定域名。 |
-b | --boot | 如果当前没有设置主机名,则将其设置为默认值(通常为 localhost)。 |
-d | --domain | 显示 DNS 域名(即 FQDN 中第一个点之后的部分)。 |
-f | --fqdn, --long | 显示 完全限定域名。这需要正确配置 /etc/hosts 文件和 DNS。 |
-F | --file | 从指定的文件中读取主机名并设置。 |
-i | --ip-address | 显示与主机名关联的网络地址(IP)。这依赖于 /etc/hosts 或 DNS 解析。 |
-I | --all-ip-addresses | 显示主机所有网络接口的 IP 地址(不包括回环地址 127.0.0.1)。此选项不依赖 DNS。 |
-s | --short | 显示短主机名,即截取第一个点之前的部分。 |
-y | --yp, --nis | 显示 NIS 域名。 |
-V | --version | 显示命令版本信息。 |
-h | --help | 显示帮助信息。 |
4. 示例用法
4.1 显示主机信息
显示当前主机名:
bash
运行
hostname
输出示例:server01
显示短主机名:
bash
运行
hostname -s
输出示例:server01
显示完全限定域名:
bash
运行
hostname -f
输出示例:server01.example.com
显示 DNS 域名:
bash
运行
hostname -d
输出示例:example.com
显示主机的所有 IP 地址(推荐方式):
bash
运行
hostname -I
输出示例:192.168.1.100 10.0.0.5
显示与主机名关联的 IP 地址(依赖解析):
bash
运行
hostname -i
输出示例:192.168.1.100
显示所有网络接口的 FQDN:
bash
运行
hostname -A
输出示例:server01.example.com server01.local
4.2 设置主机名(临时)
将主机名临时设置为 newhost:
bash
运行
sudo hostname newhost
执行后立即生效,但重启后失效。
如果当前无主机名,则设置为默认主机名:
bash
运行
sudo hostname -b
从文件 /tmp/myhostname 中读取并设置主机名:
bash
运行
sudo hostname -F /tmp/myhostname
5. 注意事项
权限问题:设置主机名通常需要 root 权限,因此需使用 sudo。 临时性修改:使用 hostname <新名称> 进行的修改是内存中的修改,不会写入任何配置文件。系统重启后即失效。 依赖解析的选项:-i (显示 IP 地址) 和 -f (显示 FQDN) 选项依赖于系统的名称解析配置(/etc/hosts 和 /etc/resolv.conf)。如果配置不正确,可能无法返回预期结果。 可靠的 IP 获取:-I 选项是获取本机所有非回环 IP 地址最可靠的方式,因为它直接查询网络接口,不依赖任何名称解析。
永久修改: 传统方式:编辑 /etc/hostname 文件(Debian/Ubuntu 等)或 /etc/sysconfig/network 文件(RHEL/CentOS 等),并确保 /etc/hosts 文件中有一行将新主机名指向 127.0.1.1 或 127.0.0.1(或具体的服务器 IP 地址)。 推荐方式(systemd 系统):使用 sudo hostnamectl set-hostname <新主机名> 命令,它会自动更新相关配置文件。
网络影响:更改主机名后,可能会影响依赖主机名的服务或网络通信,请确保相关服务配置(如 SSH、Web 服务器、数据库复制等)已相应更新。

1124

被折叠的 条评论
为什么被折叠?



