Linux hostname 命令
什么是 hostname
hostname(主机名)是标识网络中计算机的唯一名称。就像每个人都有自己的名字一样,每台计算机也需要一个独特的名称来在网络中被识别。
在 Linux 系统中,hostname 用于:
- 标识本地计算机
 - 在网络通信中识别设备
 - 影响某些网络服务的运行
 - 显示在终端提示符中
 
主机名通常分为三种类型:
- 静态主机名:存储在配置文件中,系统重启后保持不变
 - 临时主机名:运行时临时设置,重启后失效
 - 漂亮主机名:可包含特殊字符的描述性名称(如"My Laptop")
 
hostname 命令基本语法
hostname 命令的基本使用格式如下:
hostname [选项] [新主机名]
如果不带任何参数,直接执行 hostname 命令会显示当前系统的主机名:
实例
$ hostname
ubuntu-server
ubuntu-server
常用选项参数说明
hostname 命令支持多种选项来查看和设置不同类型的主机名:
| 选项 | 说明 | 
|---|---|
-a, --alias | 
显示主机的别名(如果设置了的话) | 
-A, --all-fqdns | 
显示所有网络接口的 FQDN(完全限定域名) | 
-b, --boot | 
如果未设置主机名,则使用默认主机名 | 
-d, --domain | 
显示 DNS 域名 | 
-f, --fqdn, --long | 
显示 FQDN(完全限定域名) | 
-F, --file | 
从指定文件读取主机名 | 
-i, --ip-address | 
显示主机的 IP 地址 | 
-I, --all-ip-addresses | 
显示所有网络接口的 IP 地址 | 
-s, --short | 
显示短主机名(去掉域名部分) | 
-y, --yp, --nis | 
显示 NIS 域名 | 
设置主机名的三种方法
1. 临时设置主机名(重启后失效)
实例
sudo hostname new-hostname
示例:
实例
$ sudo hostname test-server
$ hostname
test-server
$ hostname
test-server
注意:这种方法设置的主机名在系统重启后会恢复为原来的主机名。
2. 永久设置主机名(修改配置文件)
在大多数现代 Linux 发行版中(使用 systemd),可以这样永久修改主机名:
实例
sudo hostnamectl set-hostname new-hostname
示例:
实例
$ sudo hostnamectl set-hostname production-server
这个命令会同时修改:
/etc/hostname文件- 系统的静态主机名
 
3. 手动编辑配置文件
你也可以直接编辑主机名配置文件:
编辑
/etc/hostname文件:sudo nano /etc/hostname
删除原有内容,只写入新的主机名
更新
/etc/hosts文件,确保有一行将主机名映射到 127.0.0.1:127.0.0.1 localhost new-hostname
应用更改(无需重启):
sudo systemctl restart systemd-hostnamed
查看不同类型的主机名
查看静态主机名
实例
hostnamectl --static
# 或
cat /etc/hostname
# 或
cat /etc/hostname
查看临时主机名
实例
hostname
# 或
hostnamectl --transient
# 或
hostnamectl --transient
查看漂亮主机名
实例
hostnamectl --pretty
查看 FQDN(完全限定域名)
实例
hostname -f
# 或
hostnamectl --fqdn
# 或
hostnamectl --fqdn
实际应用示例
示例1:查看当前系统的完整主机信息
实例
$ hostnamectl
Static hostname: ubuntu-server
Icon name: computer-vm
Chassis: vm
Machine ID: 1a2b3c4d5e6f7g8h9i0j
Boot ID: 1k2l3m4n5o6p7q8r9s0t
Virtualization: kvm
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-42-generic
Architecture: x86-64
Static hostname: ubuntu-server
Icon name: computer-vm
Chassis: vm
Machine ID: 1a2b3c4d5e6f7g8h9i0j
Boot ID: 1k2l3m4n5o6p7q8r9s0t
Virtualization: kvm
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-42-generic
Architecture: x86-64
示例2:同时设置静态和漂亮主机名
实例
sudo hostnamectl set-hostname "server01" --pretty "Primary Web Server"
示例3:通过网络获取主机名信息
实例
$ hostname -i
192.168.1.100
$ hostname -I
192.168.1.100 10.0.0.100
192.168.1.100
$ hostname -I
192.168.1.100 10.0.0.100
常见问题与解决方案
问题1:设置主机名后不生效
解决方案:
- 确保同时更新了 
/etc/hosts文件 - 检查是否有其他服务(如 NetworkManager)覆盖了主机名设置
 - 尝试重启系统或运行:
sudo systemctl restart systemd-hostnamed
 
问题2:主机名包含非法字符
解决方案:
- 主机名只能包含:
- 字母 a-z
 - 数字 0-9
 - 连字符 (-)
 
 - 不能以连字符开头或结尾
 - 长度通常限制在 63 个字符内
 
问题3:网络服务无法识别新主机名
解决方案:
- 重启相关网络服务:
sudo systemctl restart networking
 - 清除 DNS 缓存(如果适用)
 - 确保 DNS 服务器已更新(如果是网络中的服务器)
 
最佳实践建议
命名规范:
- 使用有意义的名称,如 "web-prod-01"、"db-backup-02"
 - 避免使用特殊字符和下划线
 - 保持一致性,特别是在服务器集群中
 
多主机名环境:
- 使用静态主机名作为主要标识
 - 使用漂亮主机名提供人类可读的描述
 - 通过 
/etc/hosts为重要服务器添加别名 
自动化管理:
- 在云环境中,可以使用 cloud-init 自动设置主机名
 - 通过配置管理工具(如 Ansible)批量管理主机名
 
文档记录:
- 维护主机名与服务器角色的对应文档
 - 在监控系统中使用主机名作为标识
 
总结
hostname 是 Linux 系统管理中的基础但重要的概念。通过本文,你应该已经掌握了:
- 查看和设置不同类型主机名的方法
 - 永久修改主机名的正确流程
 - 与主机名相关的常见问题解决方案
 - 主机名管理的最佳实践
 
记住,在修改生产环境的主机名前,务必评估可能的影响,特别是在集群环境中,主机名的变更可能会影响服务发现和监控系统。
 Linux 命令大全
       
点我分享笔记