it-swarm.com.de

Wie benenne ich einen Linux-Host um, ohne einen Neustart durchführen zu müssen, damit die Umbenennung wirksam wird?

Ich habe auf serverfault nach einer Antwort auf diese Frage gesucht und konnte sie nicht finden. Ich weiß, dass es möglich ist, aber ich kann mich nicht erinnern, wie es geht. Wie ändere ich den Hostnamen eines Linux-Hosts und lasse diese Änderung ohne Neustart wirksam werden?

Ich benutze Ubuntu 16 und Ubuntu 18.

Ein großes Feature von Ubuntu sind die Dienstprogramme für grafische Desktops und grafische Systeme. Wir führen Ubuntu jedoch in unserer Produktionsumgebung aus, sodass wir uns dafür entschieden haben, den grafischen Desktop oder die Dienstprogramme nicht zu verwenden, damit diese Funktionen nicht die Ressourcen verbrauchen, die wir in unserer Produktionsumgebung benötigen.

Ich weiß, dass ich zum Umbenennen des Hosts die Dateien bearbeite:

  • /etc/hostname
  • /etc/hosts

In dem /etc/hostname man ersetzt nur den aktuellen Hostnamen (bald der frühere Hostname) durch den neuen Hostnamen.

Ubuntu in der /etc/hosts Datei hat die Zeile:

127.0.1.1 your-hostname your-hostname

Es fungiert als Bootstrapping, während Ihr Host hochfährt und sich in Ihrem Netzwerk etabliert. Vor dem Ändern des Hostnamens muss your-hostname ist der aktuelle (bald früherer Hostname) und als Teil der Änderung des Hostnamens Ihres Hosts wird dieser Name durch den neuen Namen ersetzt.

Ich bin damit vertraut, die beiden oben genannten Schritte auszuführen und dann Ihren Host neu zu starten. Aber oft, wie bei einem Produktionsserver, möchte man diese Umbenennung ausführen, aber seinen Host nicht neu starten.

Wie kann ich den Hostnamen auf einem Host ändern und diese Änderung wirksam werden lassen, ohne den Host neu zu starten?

26

Sie können die Idee des Kernels vom Hostnamen auf einem systemd-basierten System mit dem Tool hostnamectl ändern. Zum Beispiel:

hostnamectl set-hostname whatever

Sie können die aktuelle Vorstellung des Systems vom Hostnamen anzeigen mit:

hostnamectl             # equivalent to hostnamectl status

Beachten Sie, dass dies die Vorstellung eines laufenden Prozesses vom Hostnamen nicht ändert. Ein solcher Prozess müsste den Hostnamen erneut überprüfen, um aktualisiert zu werden, und fast kein Prozess tut dies. Daher müsste ein solcher Prozess neu gestartet werden. Damit jeder Prozess den neuen Hostnamen verwenden kann, müssen sie neu gestartet werden. Es ist im Allgemeinen einfacher, das System neu zu starten, als jeden Dienst einzeln neu zu starten.

49
Michael Hampton

Sie können den Hostnamen im Kernel folgendermaßen ändern:

hostname NEWNAME

Unter Linux entspricht dies praktisch einer der folgenden Bedingungen:

sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname

Dies hängt nicht von systemd (im Gegensatz zu hostnamectl, für das systemd-hostnamed erforderlich ist) oder anderen nicht standardmäßigen Tools ab, und häufig (insbesondere in Shellscript-init-Systemen) wurde der ursprüngliche Hostname im ersten festgelegt Ort.

Die meisten Programme und Dienste verwenden den Hostnamen nicht verwenden; Die wenigen, die dies tun (z. B. Postfix oder Dienste, die Kerberos verwenden), können einzeln neu gestartet werden.

(Einige Programme speichern den Hostnamen bis zum Neustart im Cache, andere fragen ihn jedes Mal ab, wenn sie ihn benötigen. Programme können auch (2)/proc/sys/kernel/hostname abfragen, um Änderungsbenachrichtigungen zu erhalten, aber nur wenige.)

22
user1686