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 celui- /etc/hostname
ci, il suffit de remplacer 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
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 changer 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 beaucoup de 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?
Réponses:
Vous pouvez changer l'idée du noyau du nom d'hôte sur un système basé sur systemd en utilisant l'
hostnamectl
outil. Par exemple:Vous pouvez voir l'idée actuelle du système du nom d'hôte avec:
Gardez à l'esprit que cela ne change pas l'idée du nom d'hôte d'un processus en cours d'exécution. 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 chaque processus 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.
la source
sudo /etc/init.d/network restart
Mis à part cela, redémarrer la mise en réseau sur mon serveur via cette commande votre point sur le redémarrage de tout processus en cours d'exécution qui a besoin de connaître le nom du serveur est valide. A convenu que le redémarrage de l'hôte résoudrait ce problème. Cela dit, il y a des moments où je veux vraiment renommer un hôte, mais je ne veux vraiment pas le redémarrer. Avez-vous une opinionsudo /etc/init.d/network restart
et son utilité pour que le nouveau nom d'hôte prenne effet sans redémarrage?/etc/init.d
le mauvais sens sur les systèmes systemd. Il est juste là pour la compatibilité descendante avec l'ancien système V.Vous pouvez modifier le nom d'hôte du noyau en utilisant:
Sous Linux, cela est pratiquement égal à l'un des éléments suivants:
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), c'est la façon dont le nom d'hôte initial a été défini en premier lieu.
La plupart des programmes et services ne sont pas réellement utiliser 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.)
la source
/etc/postfix/main.cf
et/etc/mailname
, par conséquent, ceux-ci devront également être modifiés.