如何在CentOS 6.5上更改主机名?


49

我似乎无法更改CentOS 6.5主机上的主机名。我正在按照在这里找到的说明进行操作:http : //www.rackspace.com/knowledge_center/article/centos-hostname-change

我让我/etc/hosts喜欢...

    [root@mig-dev-006 ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain 
    192.168.32.128  ost-dev-00.domain.com ost-dev-00
    192.168.32.129  ost-dev-01.domain.com ost-dev-01

...然后我/etc/sysconfig/network像这样制作我的文件...

    [root@mig-dev-006 ~]# cat /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=ost-dev-00.domain.com
    NTPSERVERARGS=iburst

...然后我hostname像这样奔跑...

    [root@mig-dev-006 ~]# hostname ost-dev-00.domain.com

...然后我运行bash,一切似乎都很好...

    [root@mig-dev-006 ~]# bash

...但是当我重新启动网络时,旧的主机名又回来了:

    [root@ost-dev-00 ~]# /etc/init.d/network restart
    Shutting down interface eth0:  Device state: 3 (disconnected)
                                                               [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface eth0:  Active connection state: activating
    Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/6
    state: activated
    Connection activated
                                                               [  OK  ]
    [root@ost-dev-00 ~]# bash
    [root@mig-dev-006 ~]# 

...我不知道。我在这里做错了。


1
您编辑过/etc/hostname文件了吗?
Anthon

没有/etc/hostname文件。[root@smp-mig-dev-006 ~]# ls -l /etc/hostname输出ls: cannot access /etc/hostname: No such file or directory
红色板球

可能是Centos的事情。您的联机帮助页告诉您有关的永久性hostname somename,它具有持久的作用吗?(如果不是,那么为什么
要打

3
我认为/etc/hostname是CentOS的7,但不是在CentOS的6
帕维尔Šimerda

我意识到这很旧,但是我在工作时闻到NetworkManager的味道,或者您可能在网络之外的另一个文件中(即在网络脚本中)设置了HOSTNAME =。/ etc / hostname文件未在CentOS 6中使用(这是系统的东西;这意味着CentOS 7及更高版本)。检查/ etc / sysconfig / network-scripts / ifcfg-eth0文件的内容;里边啥啊?注意:如果您在network-scripts /中查看Redhat的if_post脚本,您会看到set_hostname只是运行“主机名$ HOSTNAME”,其中HOSTNAME是在网络文件或ifcfg-eth0文件中设置的shell变量。
Mike S

Answers:


67

要永久更改主机名,您需要在两个地方进行更改:

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=newHostName

和:如果您有任何需要解析主机名IP的应用程序,则是一个好主意)

vi /etc/hosts 
127.0.0.1 newHostName
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

接着

 rebooting the system

7
在这两个更改的末尾添加hostname newHostName,我认为不必重新启动
Edakos 2014年

4
似乎不需要编辑/ etc / hosts文件
jgritty14年

2
答案已经被接受,但是首先,/etc/hosts更改仅是为了使主机名可解析,而不是对其进行更改,并且其/etc/sysconfig/network外观与OP中的相同。任何人都可以解释OP到底需要进行哪些更改才能使其正常工作吗?
PavelŠimerda'15

3
我认为正确的答案应该可以作为问题的答案。只要回答是说OP正确配置了问题,但没有执行加载新配置所需的操作(例如,重新启动),则从问题中重复数据就可以了。
PavelŠimerda'15

2
无需重新启动。检查strace -f主机名blah。内核立即获取消息。/ etc / hosts至少在CentOS 6.5(和7)中不影响主机的主机名。这个答案是不正确的,因为它缺少hostname命令,该命令会将内核的主机名通知内核。
Mike S

65

可以在这里找到CentOS 7的解决方案:

hostnamectl set-hostname <new hostname>

3
“ hostnamectl”是在CentOS Linux版本7.2.1511上唯一可行的解​​决方案
AJN

..然后重新启动,就我而言。
WesternGun

我认为您无需重新启动,只需重新登录即可正常工作
FearlessHyena,

5
问题是关于CentOS 6.5。CentOS 7是完全不同的野兽,这个答案不在这里。
哈拉尔德

15

您可以使用单个命令更改主机名。

  • 命令:hostname-显示旧主机名
  • 命令:hostname <new name>-此设置新的主机名

$ hostname mynewhost

用于在重新引导期间保留新主机名

编辑 / etc / sysconfig / network文件,如下所示

NETWORKING=yes
HOSTNAME=myhostanme

寻求视频帮助


我相信这是最正确的答案。值得添加的是运行:man主机名;显示更多的选项设置漂亮,瞬态,静态等等
ekerner

我认为不足以在重新启动时持续存在。您还需要修改/ etc / sysconfig / network文件。
Pozinux

6

除了已经为CentOS 6.5提供的答案之外,

CentOS 7还具有基于文本的用户界面工具来更改主机名和其他网络设置),这是网络管理器的一部分:

nmtui

启动此用户界面:

在此处输入图片说明

可以选择Set system hostname

NetworkManager的文本用户界面默认安装在CentOS-7-x86_64-DVD-1511.iso映像(基本安装)中。如果您没有,则可以使用以下命令进行安装:

yum install NetworkManager-tui

2

我不得不为一堆机器这样做。这是一个简单的python脚本来帮助您。只需提供新主机的名称作为脚本的第一个参数即可。

例如:如果您将脚本命名为changeHost.py,则以

changeHost.py [NewHostName]

其中NewHostName是所需的主机名。

另外,请确保以超级用户身份运行此脚本。



#!/usr/bin/env python
import os

from sys import argv
script, newHostName = argv

print "Modifying network file..."
target = open("/etc/sysconfig/network","w")
target.truncate()
target.write("NETWORKING=yes\n")
target.write("HOSTNAME=")
target.write(newHostName)
target.write("\n")
target.close()

print "Modifying hosts file..."
target = open("/etc/hosts","w")
target.truncate()
target.write("127.0.0.1 ")
target.write(newHostName)
target.write(" localhost.localdomain localhosts\n")
target.close()

print "Set new hostname to %r" % newHostName
os.system('/bin/hostname ' + newHostName)

2
嗯,这是一个丑陋的脚本。我想知道Puppet是否会是处理主机名的更好工具。
Red Cricket'1


4
该脚本的长度约为所需时间的3倍。Python是这项工作的错误工具。bash脚本将更短,更易读且更易于维护。
Mike S

2

在CentOS 6.5上更改主机名无需重启。

以下命令将新的主机名通知内核:

# hostname new_hostname

使用以下命令,使主机名在重新引导后保持不变:

# sed -i "s/^HOSTNAME=.*/HOSTNAME=new_hostname/g" /etc/sysconfig/network

2

如果您使用的是Centos7.x。插入以下命令。

nmtui

它将具有设置系统主机名的选项。在其上按Enter。

输入您的主机名。

单击确定。

现在,使用命令hostname检查。

它将具有您保存的主机名。


1

不幸的是,我无法通过输入以下内容来更改主机名:

/ etc / sysconfig / network

/ etc / hosts文件

但是,我可以通过编辑以下文件来更改主机名:

vi /etc/hostname
server01

通过以下方式重新启动并测试主机名:

hostname

2
注意/etc/hostname在CentOS 7 中存在的关于OP的注释,但在CentOS 6中不存在
Fox
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.