web-dev-qa-db-fra.com

Comment renommer un hôte Linux sans avoir besoin de redémarrer pour que le renommage prenne effet?

J'ai cherché une réponse à cette question sur serverfault et je n'ai pas pu la trouver. Je sais que c'est possible, mais je ne me souviens pas comment le faire. Comment changer le nom d'hôte d'un hôte Linux et faire en sorte que cette modification prenne effet sans redémarrage?

J'utilise Ubuntu 16 et Ubuntu 18.

Une grande fonctionnalité d'Ubuntu est le bureau graphique et les utilitaires du système graphique. Cependant, nous exécutons Ubuntu dans notre environnement de production, nous avons donc choisi de ne pas utiliser le bureau graphique ou les utilitaires afin que ces fonctionnalités ne consomment pas les ressources dont nous avons besoin dans notre environnement de production.

Je sais que pour renommer l'hôte, je modifie les fichiers:

  • /etc/hostname
  • /etc/hosts

Dans le /etc/hostname on remplace simplement le nom d'hôte actuel (qui sera bientôt l'ancien nom d'hôte) par le nouveau nom d'hôte.

Ubuntu dans le /etc/hosts le fichier a la ligne:

127.0.1.1 your-hostname your-hostname

Il agit comme un amorçage pendant que votre hôte démarre et s'établit au sein de votre réseau. Avant de modifier le nom d'hôte, your-hostname est le nom actuel (qui sera bientôt l'ancien nom d'hôte) et dans le cadre du changement du nom d'hôte de votre hôte, on remplace ce nom par le nouveau nom.

Ce que je connais, c'est d'exécuter les deux étapes ci-dessus, puis de redémarrer votre hôte. Mais bien des fois, comme avec un serveur de production, on voudrait exécuter ce changement de nom, mais pas redémarrer son hôte.

Comment puis-je changer le nom d'hôte sur un hôte et obtenir cette modification pour prendre effet sans redémarrer l'hôte?

26

Vous pouvez changer l'idée du noyau du nom d'hôte sur un système basé sur systemd en utilisant l'outil hostnamectl. Par exemple:

hostnamectl set-hostname whatever

Vous pouvez voir l'idée actuelle du système du nom d'hôte avec:

hostnamectl             # equivalent to hostnamectl status

Gardez à l'esprit que cela ne change pas l'idée du nom d'hôte d'un processus en cours. Un tel processus devrait vérifier à nouveau le nom d'hôte afin d'être mis à jour, et presque aucun processus ne le fait. Un tel processus devrait donc être redémarré. Pour que le processus every commence à utiliser le nouveau nom d'hôte, ils doivent être redémarrés. Il est généralement plus facile de simplement redémarrer le système que de redémarrer chaque service individuellement.

49
Michael Hampton

Vous pouvez modifier le nom d'hôte du noyau en utilisant:

hostname NEWNAME

Sous Linux, cela est pratiquement égal à l'un des éléments suivants:

sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname

Cela ne dépend pas de systemd (contrairement à hostnamectl qui nécessite systemd-hostnamed) ou de tout autre outil non standard, et souvent (en particulier dans les systèmes shellscript-init), la façon dont le nom d'hôte initial a été défini dans le premier endroit.

La plupart des programmes et services ne sont pas réellement tiliser le nom d'hôte; ceux qui le font (par exemple Postfix ou les services utilisant Kerberos) peuvent être redémarrés un par un.

(Certains programmes mettent en cache le nom d'hôte jusqu'au redémarrage, d'autres l'interrogent chaque fois qu'ils en ont besoin. Les programmes ont également la possibilité d'interroger (2)/proc/sys/kernel/hostname pour recevoir des notifications de changement, mais peu le font.)

22
user1686