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

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

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

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

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

  • /etc/hostname
  • /etc/hosts

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

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

127.0.1.1 your-hostname your-hostname

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

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

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



답변

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

hostnamectl set-hostname whatever

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

hostnamectl             # equivalent to hostnamectl status

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


답변

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

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을 폴링하는 기능도 있지만 거의 없습니다.)