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 grafischen Desktop- und grafischen Systemdienstprogramme. Da wir jedoch Ubuntu in unserer Produktionsumgebung ausführen, haben wir uns dafür entschieden, 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 die Dateien bearbeite, um den Host umzubenennen:
/etc/hostname
/etc/hosts
In dem ersetzt /etc/hostname
man einfach 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 your-hostname
wird der aktuelle (bald der frühere) Hostname angezeigt. Wenn Sie den Hostnamen Ihres Hosts ändern, wird dieser Name durch den neuen Namen ersetzt.
Was ich kenne, ist das Ausführen der beiden oben genannten Schritte und das anschließende Neustarten Ihres Hosts. Aber oft möchte man, wie bei einem Produktionsserver, diesen Umbenennungsvorgang ausführen, aber seinen Host nicht neu starten.
Wie kann ich den Hostnamen auf einem Host ändern und diese Änderung in Kraft setzen, ohne den Host neu zu starten?
Antworten:
Sie können die Kernelidee des Hostnamens auf einem systemd-basierten System mit dem
hostnamectl
Tool ändern . Beispielsweise:Sie können die aktuelle Vorstellung des Systems vom Hostnamen anzeigen mit:
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. Ein solcher Prozess müsste also neu gestartet werden. Damit jeder Prozess den neuen Hostnamen verwenden kann, müssen sie neu gestartet werden. Im Allgemeinen ist es einfacher, das System neu zu starten, als jeden Dienst einzeln neu zu starten.
quelle
sudo /etc/init.d/network restart
Abgesehen davon ist ein Neustart des Netzwerks auf meinem Server über diesen Befehl erforderlich, um einen laufenden Prozess neu zu starten, bei dem der Servername bekannt sein muss. Einverstanden, dass ein Neustart des Hosts das beheben würde. Das heißt, es gibt Zeiten, in denen ich einen Host wirklich umbenennen, aber nicht neu starten möchte. Gibt es eine Meinung zusudo /etc/init.d/network restart
und wie nützlich ist es, wenn der neue Hostname ohne Neustart wirksam wird?/etc/init.d
auf systemd-Systemen falsch. Es ist nur ausSie können den Hostnamen im Kernel folgendermaßen ändern:
Unter Linux entspricht dies praktisch einem der folgenden Punkte:
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 anfängliche Hostname an erster Stelle festgelegt.
Die meisten Programme und Dienste verwenden den Hostnamen nicht. 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.)
quelle
/etc/postfix/main.cf
und fest codiert/etc/mailname
, sodass auch diese bearbeitet werden müssen.