首页 > Sysadmin > 正文

在 Linux 里查看主机名的几种写法

huyuanwen 2026-10-30 Sysadmin

主机名是 Linux 主机在网络上的身份标识,查和临时改通常一行命令完成,永久写入才需要管理员权限。

内核视角:hostname 命令

hostname
hostname -s
hostname -f
hostname -d

不带参数时,hostname 直接打印内核返回的主机名,等价于读取 gethostname(2) 的结果 [1]。-s 是短名,-f 是 FQDN(fully qualified domain name),-d 只给 DNS 域名部分。WSL 实测:Ubuntu 24.04 里 hostname 返回 DESKTOP-COLORFUL,hostname -f 返回 DESKTOP-COLORFUL.localdomain,hostname -d 返回 localdomain。

systemd 视角:hostnamectl

hostnamectl status
hostnamectl --static
hostnamectl --transient

带 systemd 的系统推荐优先看 hostnamectl,它把三种 hostname 分开汇报 [2]:--static 是从 /etc/hostname 读出来的持久值,--transient 是运行时从网络层拿到的 fallback。WSL 实测:hostnamectl --static 和 --transient 都返回 DESKTOP-COLORFUL,说明没有网络层覆盖。

静态名到底存在哪

静态主机名持久化在 /etc/hostname,只有管理员权限才能改 [3]。查看时普通用户直接读文件就行:

cat /etc/hostname

WSL 实测:Ubuntu 24.04 默认内容就是 DESKTOP-COLORFUL。有些发行版还会把 preserve_hostname 写进 /etc/cloud/cloud.cfg(云初始化场景),防止 cloud-init 覆盖你的设置。

临时修改与永久写入

只想当前会话改,直接 sudo hostname <new>,重启恢复原值 [1]。

sudo hostnamectl set-hostname prod-web-01

hostnamectl set-hostname 会同时更新 static 和 /etc/hostname,是 systemd 系统上的标准写法 [2]。本环境 sudo 需要交互密码,未实测该命令;请先在测试机确认回滚步骤。

回滚与排错

# 把静态名改回旧值
sudo hostnamectl set-hostname old-name
sudo systemctl restart systemd-hostnamed

# 确认三种视角一致
hostname
hostnamectl status
cat /etc/hostname

常见现象:hostname 改了但 hostnamectl status 还是旧的——通常是 static 没动,只改了内核缓存,重启或重载 systemd-hostnamed 后又会回到 static 的值。

草稿待审;源站 linux.zaixianjisuan.com 被宝塔 WAF 拦截,正文未采信源站内容,仅基于官方手册与 WSL 实测;hostnamectl set-hostname 因 sudo 密码限制未实际执行,标记为 基于文档核查,尚未实际执行。


参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。