이름을 변경하기 위해 재부팅하지 않고 Linux 호스트의 이름을 바꾸려면 어떻게해야합니까?


26

serverfault에서이 질문에 대한 답변을 검색하여 찾을 수 없습니다. 나는 그것이 가능하다는 것을 알고 있지만 그것을하는 방법을 기억할 수 없습니다. Linux 호스트의 호스트 이름을 변경하고 재부팅하지 않고 변경 사항을 적용하려면 어떻게합니까?

우분투 16과 우분투 18을 사용하고 있습니다.

Ubuntu의 큰 기능은 그래픽 데스크탑 및 그래픽 시스템 유틸리티입니다. 그러나 프로덕션 환경에서 Ubuntu를 실행하고 있으므로 프로덕션 환경에서 필요한 리소스를 소비하지 않기 위해 그래픽 데스크탑 또는 유틸리티를 사용하지 않기로 결정했습니다.

호스트 이름을 바꾸려면 파일을 편집한다는 것을 알고 있습니다.

  • /etc/hostname
  • /etc/hosts

에서 /etc/hostname하나가 바로 현재의 호스트 이름을 대체하는 새로운 호스트 이름 (곧 이전의 호스트 이름이어야합니다).

/etc/hosts파일의 우분투 에는 다음 줄이 있습니다.

127.0.1.1 your-hostname your-hostname

호스트가 부팅되고 네트워크 내에서 자체적으로 구축되는 동안 부트 스트랩 역할을합니다. 호스트 이름을 변경하기 전에 your-hostname현재 (이전 호스트 이름이 됨) 호스트의 호스트 이름을 변경하는 과정에서 해당 이름이 새 이름으로 바뀝니다.

내가 익숙한 것은 위의 두 단계를 실행 한 다음 호스트를 재부팅하는 것입니다. 그러나 프로덕션 서버와 마찬가지로 많은 시간이 해당 이름 바꾸기를 실행하고 싶지만 호스트를 재부팅하지는 않습니다.

호스트에서 호스트 이름을 변경하고 호스트를 재부팅하지 않고 변경 사항을 적용하려면 어떻게해야합니까?


1
"Ubuntu 16"및 "Ubuntu 18"과 같은 것은 없으며 16.10과 17.04 사이가 16.04와 16.10 사이에 큰 차이가있을 수 있습니다.
파이프

답변:


49

hostnamectl도구를 사용하여 시스템 기반 시스템에서 호스트 이름에 대한 커널의 아이디어를 변경할 수 있습니다 . 예를 들면 다음과 같습니다.

hostnamectl set-hostname whatever

다음을 사용하여 시스템의 현재 호스트 이름 아이디어를 볼 수 있습니다.

hostnamectl             # equivalent to hostnamectl status

이렇게해도 호스트 이름에 대한 실행중인 프로세스의 아이디어는 변경되지 않습니다. 이러한 프로세스는 업데이트를 위해 호스트 이름을 다시 확인해야하며 프로세스는 거의 없습니다. 따라서 이러한 프로세스를 다시 시작해야합니다. 위해서는 모든 새 호스트 이름을 사용하기 시작하는 과정, 그들은 다시 시작해야합니다. 일반적으로 모든 서비스를 개별적으로 다시 시작하는 것보다 시스템을 다시 부팅하는 것이 더 쉽습니다.


1
이름을 바꾼 후 재부팅하지 않으려면 서버에서 네트워킹을 다시 시작해야합니까? 나는 이것을 발견했다 : sudo /etc/init.d/network restart 그 외에도 서버 이름을 알아야하는 실행중인 프로세스를 다시 시작하는 것에 대한 요점을 해당 명령을 통해 서버에서 네트워킹을 다시 시작하십시오. 호스트를 다시 시작하면 문제가 해결된다는 데 동의했습니다. 즉, 호스트 이름을 바꾸고 싶지만 재부팅하지 않으려는 경우가 있습니다. sudo /etc/init.d/network restart재부팅 할 때 새 호스트 이름을 적용하는 데 유용한 의견 과 그 유용성이 있습니까?
Peter Jirak Eldritch

3
@ PeterJirak : 완전히 쓸모가 없습니다. 해당 프로그램 (호스트 이름을 알아야 함)이 이전에 호스트 이름 업데이트를 감시하지 않으면 지금 귀찮게하지 않습니다. 시스템에 eth0에서 IP 주소를 재구성하라고 지시해도 조금 영향을 미치지 않습니다.
grawity

@PeterJirak "새 호스트 이름을 적용"한다는 것은 무엇을 의미합니까? 앞에서 설명한 것처럼 즉시 적용되며 새로 시작한 프로세스가이를 인식합니다. 또한 네트워크를 다시 시작해야하는 이유를 이해하지 못합니까? 호스트 이름과 어떤 관련이 있습니까?
Michael Hampton

5
"네트워킹"전체가 그런 이름의 /etc/init.d 스크립트가 있기 때문에 다시 시작할 수있는 사용자 공간 서비스라는 것은 일반적인 오해입니다.
grawity

2
@PeterJirak 부수적으로, 서비스를 실행 /etc/init.d하는 것은 시스템 시스템에서 잘못된 방법입니다. 이전 시스템 V와의 호환성을 위해 제공됩니다.
rexkogitans

22

다음을 사용하여 커널 내부 호스트 이름을 변경할 수 있습니다.

hostname NEWNAME

Linux에서 이것은 실제로 다음 중 하나와 같습니다.

sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname

이는 systemd ( systemd- hostnamed 를 필요로하는 hostnamectl 과는 달리 ) 또는 기타 비표준 도구 에 의존하지 않으며 , 종종 (특히 shellscript-init 시스템에서) 초기 호스트 이름이 처음 설정되는 방식입니다.

대부분의 프로그램과 서비스는 실제로 호스트 이름을 사용 하지 않습니다 . 몇 가지 작업 (예 : Kerberos를 사용하는 Postfix 또는 서비스)을 하나씩 다시 시작할 수 있습니다.

(일부 프로그램은 재시작 할 때까지 호스트 이름을 캐시하고, 다른 프로그램은 필요할 때마다 호스트 이름을 쿼리합니다. 프로그램은 변경 알림을 수신하기 위해 / proc / sys / kernel / hostname을 폴링하는 기능도 있지만 거의 없습니다.)


2
이러한 방법은 영구적이지 않으며 재부팅 후에도 지속되지 않습니다.
Michael Hampton

3
다행히도 OP는 이미 질문 자체의 지속성을 다루었습니다.
grawity

1
postfix의 호스트 이름은 /etc/postfix/main.cfand의 한두 곳에 하드 코딩되어 /etc/mailname있을 수 있으므로 편집해야합니다.
Mark Plotnick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.