几种修改Linux主机名的方法

本文详细介绍了在Linux系统中修改主机名的方法,包括临时修改和永久修改的步骤,以及不同类型的主机名(pretty、static、transient)的区别。文章还提供了在不同Linux发行版中修改主机名的配置文件路径,以及确保修改生效的命令。

在安装一些系统时,需要修改hostname,比如安装Hadoop时需要修改主机名,而且主机名不能包含下划线。

实际上,主机名分三种(命令hostnamectlhostnamectl status可查看三种主机名):

1) “pretty”主机名,UTF8格式的主机名,这个仅供阅读,长度无限制;

2) “static”主机名,日常所称的主机名(traditional hostname)。最多为64个字符,仅可包含“.”、“_”、“-”、“a-z”、“A-Z”和“0-9”这些字符,并且不能以“.”打头和结尾,也不能两个“.”连续;

3) “transient”主机名,内核维护的动态主机名,初始化为“static”主机名,默认为localhost。也为hadoop要求的主机名,它的约束规则同“static”主机名。如果存在“static”主机名,且不是“localhost”,那么将忽略“transient”主机名。“transient”主机名可被DHCP和mDNS修改。

 

当三种主机名相同时,“hostnamectl status”只会显示“static”主机名,三种主机名的设置方法:

hostnamectl --pretty set-hostname NAME

hostnamectl --static set-hostname NAME

hostnamectl --transient set-hostname NAME

 

 

hostnamectl修改的主机名,在系统重启之前会一直有效,而hostname只对当次有效。如果不指定参数,则一次设置三种主机名:

hostnamectl set-hostname NAME

1. 临时修改主机名

命令hostname不但可以查看主机名,还可以用它来修改主机名,格式为:hostname 新主机名。

在修改之前9.4.149.11对应的主机名为hadoop_10202,而9.4.149.6对应的主机名为hadoop_10203。两者的主机名均带有下划线,因此需要修改。为求简单,仅将原下划线去掉:

hostname hadoop10202

hostname hadoop10203

 

经过上述修改后,类似于修改环境变量,只临时有效,还需要修改相应的系统配置文件,以永久有效。

2. 永久修改主机名

不同的Linux发行版本,对应的系统配置文件可能不同,SuSE 10.1是/etc/HOSTNAME

# cat /etc/HOSTNAME

hadoop_10202

 

将文件中的“hadoop_10202”,改成“hadoop10202”。有些Linux发行版本对应的可能是/etc/hostname文件,有些如CentOS和RedHat同时有/etc/hostname和/etc/sysconfig/network两个文件,修改/etc/hostname即可。

需注意:/etc/sysconfig/network的格式和/etc/hostname、/etc/HOSTNAME不同,为:

HOSTNAME=主机名

 

修改之后,需要重启网卡,以使修改生效,执行命令:/etc/rc.d/boot.localnet start(不同系统命令会有差异,这是SuSE上的方法,其它一些可能为:/etc/init.d/network restart或service network restart等),再次使用hostname查看,会发现主机名变了。

上述方法如果不能永久有效,则可使用hostnamectl修改来修改永久有效。如果还是不行,则可重启系统以使永久有效。

 

可以通过以下多种方法查看主机名:

1) hostname命令(也可以用来修改主机名,但当次仅当次会话有效)

2) hostnamectl命令(也可以用来修改主机名,系统重启前一直有效)

3) cat /proc/sys/kernel/hostname

4) cat /etc/hostname或cat /etc/sysconfig/network(永久性的修改,需要重启)

5) sysctl kernel.hostname(也可以用来修改主机名,但仅重启之前有效)


批量修改/etc/hostname工具(其它可参照):

https://github.com/eyjian/libmooon/blob/master/shell/set_hostname.sh

 

3. 区别

方法

效果

hostname

当次登录临时有效,新登录或重新登录后无效

hostnamectl

系统重启之前一直有效,重启后无效

/etc/hostname

只有在系统重启后才有效

 

### 如何在Linux系统中修改主机名Linux系统中,修改主机名可以通过多种方法实现。以下是几种常见的方法,具体取决于使用的Linux发行版和需求。 #### 方法一:通过`/etc/hostname`文件修改静态主机名 对于现代Linux发行版(如Ubuntu、Debian、CentOS 7及以上版本),静态主机名通常存储在`/etc/hostname`文件中。可以通过编辑此文件来更改主机名。 ```bash sudo nano /etc/hostname ``` 将文件中的旧主机名替换为新的主机名,保存并退出。随后需要重启系统或使用以下命令使更改生效: ```bash sudo hostnamectl set-hostname 新主机名 ``` 此外,还需要更新`/etc/hosts`文件以确保主机名解析正确。打开`/etc/hosts`文件并找到包含旧主机名的行,将其替换为新主机名[^2]。 #### 方法二:使用`hostnamectl`命令修改静态主机名 `hostnamectl`是systemd提供的一个工具,用于管理主机名。可以使用以下命令直接设置新的静态主机名: ```bash sudo hostnamectl set-hostname 新主机名 ``` 此命令会自动更新`/etc/hostname`文件,并且不需要手动编辑文件。同样,需要确保`/etc/hosts`文件中的主机名也同步更新[^3]。 #### 方法三:通过`hostname`命令临时修改主机名 如果只需要临时修改主机名(即仅在当前会话中生效,重启后恢复为静态主机名),可以使用`hostname`命令: ```bash sudo hostname 新主机名 ``` 需要注意的是,这种方法不会更改静态主机名,也不会影响`/etc/hostname`文件的内容[^4]。 #### 方法四:通过修改`.bashrc`文件更改终端显示的主机名 如果希望更改终端提示符中显示的用户名和主机名格式,可以编辑用户的`.bashrc`文件。例如,打开`.bashrc`文件: ```bash nano ~/.bashrc ``` 找到与`PS1`变量相关的配置部分,将`u`(代表用户名)替换为`h`(代表主机名),或者根据需要调整其他格式化字符串[^5]。 ### 注意事项 - 修改主机名后,建议检查网络服务是否正常运行,特别是依赖于主机名的服务(如DNS、SSH等)。 - 在某些情况下,可能需要重启系统以确保所有服务识别新的主机名- 如果使用的是容器化环境(如Docker),可能需要额外配置以同步主机名
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值