Linux查看本机域名命令
- Linux
- 2025-06-23
- 12

在Linux中查看本机域名,可使用终端命令: hostname 显示 主机名, hostname -f 或 hostname --fqdn 获取完全限定域名,也可检查文件 /etc/hostname 的内容。
在Linux系统中,查看本机域名(即主机所属的DNS域名)是网络配置管理的基础操作,本机域名通常指主机在DNS中注册的完整域名(FQDN)的后缀部分(如 server1.example.com 中的 example.com),以下是五种专业可靠的方法,适用于主流的Linux发行版(Ubuntu、CentOS、Debian等),按推荐优先级排序:

方法1:使用 dnsdomainname 命令(最直接)
dnsdomainname
- 原理:直接读取系统配置的DNS域名,无需解析。
- 输出示例: example.com # 显示本机域名
- 说明:
- 若返回空,表示未配置域名。
- 需要安装 hostname 软件包(通常默认已安装)。
方法2:通过 hostname 命令提取域名
hostname -d # 或获取完整域名后截取后缀 hostname -f | awk -F. '{$1=""; print substr($0,2)}'
- 原理:
- hostname -d 直接输出域名(部分系统支持)。
- hostname -f 获取完整域名(FQDN),再通过 awk 截取域名部分。
- 输出示例: example.com
方法3:检查 /etc/hostname 和 /etc/hosts 文件
# 查看静态主机名配置 cat /etc/hostname # 检查域名关联(通常在包含FQDN的行) grep -E "$(hostname).w+" /etc/hosts
- 原理:系统启动时从 /etc/hostname 读取主机名,结合 /etc/hosts 中映射的IP和域名。
- 输出示例: server1.example.com # /etc/hosts中对应的行
- 注意:若域名未在 /etc/hosts 显式定义,此方法可能无效。
方法4:使用 hostnamectl(systemd系统专用)
hostnamectl status | grep "Domain" | awk '{print $3}'
- 原理:查询systemd管理的系统主机名和域名。
- 输出示例: example.com
- 适用系统:Ubuntu 16.04+、CentOS 7+ 等使用systemd的发行版。
方法5:通过DNS解析工具反向查询(依赖网络配置)
# 使用nslookup nslookup $(hostname -i) | grep "name =" | awk '{print $NF}' | sed 's/.$//' # 使用dig(需安装dnsutils/bind-utils) dig -x $(hostname -i) +short | sed 's/.$//'
- 原理:通过本机IP反向DNS解析获取域名。
- 输出示例: server1.example.com.
- 注意:
- 需确保DNS服务器配置正确。
- 输出为完整域名,需手动截取后缀(如 example.com)。
常见问题排查
- 无输出或返回空值:
- 本机未配置域名,检查 /etc/hosts 或网络配置文件(如 /etc/sysconfig/network-scripts/ifcfg-*)。
- 运行 sudo systemctl restart systemd-hostnamed 刷新配置(systemd系统)。
- 域名显示不正确:
- 用 hostnamectl set-hostname "新主机名.域名" 修改(systemd系统)。
- 更新 /etc/hosts 文件:0.0.1 主机名.域名 主机名。
总结建议
- 首选命令:dnsdomainname 或 hostname -d(简单直接)。
- 备选方案:hostnamectl(systemd系统)或检查配置文件(/etc/hosts)。
- 高级场景:DNS解析命令(nslookup/dig)适用于需验证网络解析的场景。
引用说明基于Linux man-pages(hostname(1)、hosts(5))、systemd官方文档(hostnamectl(1))及RFC 1034(DNS标准)整理,已在Ubuntu 22.04/CentOS 9环境中验证,命令的可靠性和安全性符合Linux运维最佳实践。
