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합니까? (왜 그렇게 부르지 않습니까?)
Anthon

3
/etc/hostnameCentOS 7에는 있지만 CentOS 6에는 없다고 생각합니다 .
Pavel Šimerda

나는 이것이 오래되었다는 것을 알고 있지만 직장에서 NetworkManager 냄새가 나거나 네트워크가 아닌 다른 파일 (예 : 네트워크 스크립트)에 HOSTNAME =이 설정되어있을 수 있습니다. / etc / hostname 파일은 CentOS 6에서 사용되지 않습니다 (시스템화 된 것이므로 CentOS 7 이상을 의미 함). / etc / sysconfig / network-scripts / ifcfg-eth0 파일의 내용을 확인하십시오. 그 안에 무엇입니까? 참고 : network-scripts /에서 Redhat의 if_post 스크립트를 보면 set_hostname이 단순히 "hostname $ HOSTNAME"을 실행하는 것을 볼 수 있습니다. 여기서 HOSTNAME은 네트워크 파일 또는 ifcfg-eth0 파일에 설정된 쉘 변수입니다.
Mike S

답변:


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

4
/ etc / hosts 파일을 편집 할 필요가없는 것 같습니다
jgritty

2
대답은 받아 들여졌지만, 먼저 /etc/hosts호스트 이름을 해결할 수있게하고 변경하지 말아야 /etc/sysconfig/network하며 OP와 동일 하게 변경됩니다 . 누구나 OP가 작동하도록 변경하기 위해 정확히 필요한 것이 무엇인지 설명 할 수 있습니까?
Pavel Šimerda

3
나는 정답이 질문에 대한 답으로 작용해야한다고 생각합니다. 답변에서 OP가 올바르게 구성했지만 새 구성을로드하는 데 필요한 작업 (예 : 재부팅)을 수행하지 않았다고 대답하면 질문에서 데이터를 반복하는 것이 좋습니다.
Pavel Šimerda

2
재부팅 할 필요가 없습니다. strace -f hostname blah를 확인하십시오. 커널은 즉시 메시지를받습니다. / etc / hosts는 CentOS 6.5 (및 7)에서 호스트의 호스트 이름에 영향을 미치지 않습니다. 그리고이 답변은 호스트 이름 명령이 누락되어 커널에 호스트 이름을 알려주는 것이 잘못되었습니다.
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은 완전히 다른 짐승이며이 답변은 여기에 속하지 않습니다.
Harald

15

단일 명령으로 호스트 이름을 변경할 수 있습니다.

  • 명령 : hostname-이전 호스트 이름을 표시합니다
  • 명령 : hostname <new name>-새 호스트 이름을 설정합니다

$ hostname mynewhost

재부팅시 새 호스트 이름을 유지하려면

/ etc / sysconfig / network 파일을 아래와 같이 편집 하십시오

NETWORKING=yes
HOSTNAME=myhostanme

비디오 도움말


이것이 가장 정답이라고 생각합니다. 실행을 추가 할 가치가있는 : man hostname; pretty, transient, static 등을 설정하기위한 옵션이 더 있습니다.
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

나는 많은 기계를 위해 이것을해야했습니다. 다음은 간단한 파이썬 스크립트입니다. 새 호스트 이름을 스크립트의 첫 번째 인수로 제공하십시오.

예를 들어 : 스크립트 이름을 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이 호스트 이름을 다루기위한 더 좋은 도구인지 궁금합니다.
레드 크리켓


4
이 스크립트는 필요한 길이의 약 3 배입니다. 파이썬은 그 일에 잘못된 도구입니다. bash 스크립트는 훨씬 짧고 읽기 쉽고 유지 관리가 쉽습니다.
Mike S

2

CentOS 6.5에서 호스트 이름을 변경하기 위해 재부팅 할 필요가 없습니다.

다음 명령은 커널에 새 호스트 이름을 알려줍니다.

# hostname new_hostname

재부팅시 호스트 이름이 유지되도록 다음 명령을 사용하십시오.

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

2

Centos 7.x를 사용하는 경우 다음 명령을 삽입하십시오.

nmtui

set system hostname 옵션이 있습니다 . 그것에 Enter를 누르십시오.

호스트 이름을 작성하십시오.

확인을 클릭하십시오.

이제 hostname 명령으로 확인하십시오 .

저장된 호스트 이름이 있습니다.


1

불행히도 다음과 같이 입력하여 호스트 이름을 변경할 수 없었습니다.

/ etc / sysconfig / network

/ etc / hosts 파일

그러나 아래 파일을 편집하여 호스트 이름을 변경할 수있었습니다.

vi /etc/hostname
server01

다음을 통해 호스트 이름을 다시 시작하고 테스트하십시오.

hostname

2
/etc/hostnameCentOS 6에는 존재하지 않지만 CentOS 6에는 존재하지 않는 OP에 대한 의견에 주목하십시오
Fox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.