目录
43. shell命令--hostname
功能说明
hostname
hostname 命令在 Linux 系统中用于显示或设置系统的主机名。主机名是一个系统在网络上的标识,可以是域名的一部分,也可以是简单的标签。hostname 命令的使用非常简单,但它提供了几个不同的选项来满足不同的需求。
hostname 命令的功能是用于显示和设置系统的主机名,Linux 系统中的 HOSTNAME环 境变量对应保存了当前的主机名称,使用 hostname 命令能够查看和设置此环境变量的值,而要想永久修改主机名称则需要使用 hostnamectl 命令或直接编辑配置文件 /etc/hostname 才行。
hostname命令:用于显示和设置系统的主机名称。
- 环境变量 HOSTNAME 也保存了当前的主机名。
- 在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重启之后还是原来的主机名。如果需要永久修改主机名,需要修改 /etc/hosts 和 /etc/sysconfig/network 的相关内容并进行重启;也可以使用 hostnamectl 命令进行永久修改。
hostnamectl
hostnamectl 命令是 Linux 系统中用于查询和更改系统主机名及相关配置的实用工具。它通常与 systemd 一起使用,特别是在那些使用 systemd 作为初始化系统(init system)的 Linux 发行版中,如 Fedora、CentOS 7 及以上版本、Ubuntu 15.04 及以上版本(使用 systemd 作为默认 init system 的版本)等。
语法格式
hostname
hostname [-b] -a, --alias 显示主机别名
-A, --all-fqdns 显示所有FQDN名称
-b, --boot 如果没有可用的主机名,则设置默认主机名
-d, --domain 显示DNS域名
-f, --fqdn, --long 显示FQDN名称
-F, --file 从给定文件中读取主机名或NIS域名
-i, --ip-address 显示主机的ip地址
-I, --all-ip-addresses 显示主机所有的ip地址
-s, --short 显示短主机名称,在第一个点处截断
-y, --yp, --nis 显示NIS域名
{hostname|-F file} 设置主机名称(或从文件获取)
hostname [-a|-A|-d|-f|-i|-I|-s|-y] 显示格式化的名称
hostname 显示主机名称
{yp,nis,}domainname {nisdomain|-F file} 设置 NIS 主机名称(或从文件获取)
{yp,nis,}domainname 显示 NIS 主机名称
dnsdomainname 显示 DNS 主机名称
hostname -V|--version|-h|--help 打印信息并退出
SYNOPSIS
hostname [-a|--alias] [-d|--domain] [-f|--fqdn|--long] [-A|--all-fqdns] [-i|--ip-address]
[-I|--all-ip-addresses] [-s|--short] [-y|--yp|--nis]
hostname [-b|--boot] [-F|--file filename] [hostname]
hostname [-h|--help] [-V|--version]
domainname [nisdomain] [-F file]
ypdomainname [nisdomain] [-F file]
nisdomainname [nisdomain] [-F file]
dnsdomainname
hostnamectl
hostnamectl [选项...] 指令 ...
选项说明
hostname
-a, --alias 显示主机别名
-A, --all-fqdns 显示所有FQDN名称
-b, --boot 如果没有可用的主机名,则设置默认主机名
-d, --domain 显示DNS域名
-f, --fqdn, --long 显示FQDN名称
-F, --file 从给定文件中读取主机名或NIS域名
-i, --ip-address 显示主机的ip地址
-I, --all-ip-addresses 显示主机所有的ip地址
-s, --short 显示短主机名称,在第一个点处截断
-y, --yp, --nis 显示NIS域名
hostnamectl
指令
status 显示当前主机名设置
set-hostname NAME 设置系统主机名
set-icon-name NAME 设置主机的图标名称
set-chassis NAME 设置主机的机箱类型
set-deployment NAME 设置主机的部署环境
set-location NAME 设置主机位置
set-pretty-name 设置或查看 Pretty 主机名
选项
-h --help 显示此帮助
--version 显示包的版本
--no-ask-password 不提示输入密码
-H --host=[USER@]HOST 在远程主机上操作
-M --machine=CONTAINER 在本地容器上执行操作。指定要连接到的容器名称。
--transient, --static, --pretty
如果调用了status(或者没有给出显式命令)并且指定了其中一个开关,hostnamectl将只打印出这个选定的主机名。
实践操作
hostname
1. 显示当前主机名
#如果不带任何选项或参数,hostname 命令将显示当前系统的主机名。
hostname
2. 设置临时主机名
#注意,直接使用 hostname 命令后跟新的主机名会临时更改主机名,这种更改在重启后不会保留
cat /etc/hostname
hostname www.baidu.com
hostname
cat /etc/hostname
#不会更改 /etc/hostname 文件(该文件通常包含永久主机名),也不会影响重启后的设置
3. 显示系统的域名部分
# -d 这个选项试图通过查找主机名中的第一个点(.)来分离主机名和域名。
hostname -d
ping www.baidu.com
hostname www.MineGi.com
hostname -d
4. 显示系统的完全限定域名(FQDN)
#这通常是主机名和域名的组合,例如 myhostname.example.com。
hostname -f
5. 显示与主机名关联的网络接口的 IP 地址
hostname -i #这个选项并不是所有版本的 hostname 命令都支持
hostname -I #使用 hostname -I(注意是大写的 I)来获取所有配置的 IP 地址
6. 显示主机名的短格式,即去掉任何可能的域名部分
hostname -s
hostnamectl
1. 显示主机名设置
#这个命令将显示系统的当前主机名、静态主机名(如果设置的话)、瞬态主机名
#(如果和静态不同的话)、内核信息、操作系统版本以及架构等信息。
hostnamectl status
hostnamectl #简写
2. 永久修改主机名(不用重启)
cat /etc/redhat-release #查看系统发行版本
cat /etc/hostname
hostnamectl set-hostname CentOS7.9 #永久设置主机名
cat /etc/hostname
hostname
echo MineGi >/etc/hostname #也可以直接修改配置文件,永久修改
cat /etc/hostname
hostname #重启后生效
注意事项
- 永久改变主机名
要永久改变主机名,你需要编辑 /etc/hostname 文件(在大多数基于 Debian 的系统中)或使用系统的特定工具(如在基于 Red Hat 的系统中使用 hostnamectl 命令)。
- /etc/hosts
文件:在更改主机名时,你可能还需要更新 /etc/hosts 文件,确保系统能够正确解析自己的主机名。这个文件通常包含 IP 地址到主机名的映射,包括 127.0.0.1 到 localhost 和新主机名的映射。
- hostnamectl
命令:在一些系统上(如 Fedora、CentOS 7 及以上版本),hostnamectl 命令提供了更全面的方式来管理主机名和相关的系统设置。它允许你设置静态和瞬态主机名,以及配置网络域名等信息。
- 在更改主机名后,可能需要重新启动网络服务(如 NetworkManager)或完全重启系统来使更改生效。
- 在某些情况下,特别是当使用基于云的服务或虚拟机时,更改主机名可能会受到管理平台的限制。
- 使用 hostnamectl 更改的主机名设置是全局性的,会影响整个系统。
hostnamectl 是一个非常强大的工具,允许系统管理员轻松管理和查询系统的重要配置信息,包括主机名。然而,由于它的操作涉及系统的核心设置,因此建议在进行更改之前确保已经充分了解命令的影响。