Я искал ответ на этот вопрос о сбое сервера и не смог его найти. Я знаю, что это возможно, но я не могу вспомнить, как это сделать. Как изменить имя хоста Linux-узла и заставить это изменение вступить в силу без перезагрузки?
Я использую Ubuntu 16 и Ubuntu 18.
Большой особенностью Ubuntu являются графические утилиты рабочего стола и графические системы. Тем не менее, мы используем Ubuntu в нашей производственной среде, поэтому мы решили не использовать графический рабочий стол или утилиты, чтобы эти функции не потребляли ресурсы, которые нам нужны в нашей производственной среде.
Я знаю, что для переименования хоста я редактирую файлы:
/etc/hostname
/etc/hosts
В /etc/hostname
одном просто заменяется текущее имя хоста (скоро будет прежним именем хоста) новым именем хоста.
Ubuntu в /etc/hosts
файле имеет строку:
127.0.1.1 your-hostname your-hostname
Он действует как начальная загрузка, пока ваш хост загружается и устанавливает себя в вашей сети. Прежде чем изменить имя хоста, оно your-hostname
является текущим (которое вскоре станет прежним именем хоста) и, как часть изменения имени хоста вашего хоста, один заменяет это имя новым именем.
Я знаком с тем, что выполнил два вышеупомянутых шага и затем перезагрузил ваш хост. Но во многих случаях, как и на производственном сервере, хотелось бы выполнить это переименование, но не перезагружать хост.
Как я могу изменить имя хоста на хосте и заставить это изменение вступить в силу без перезагрузки хоста?
Ответы:
Вы можете изменить представление ядра об имени хоста в системной системе, используя
hostnamectl
инструмент. Например:Вы можете просмотреть текущую идею системы об имени хоста с помощью:
Имейте в виду, что это не меняет представление запущенного процесса об имени хоста. Такой процесс должен был бы проверить имя хоста снова, чтобы быть обновленным, и почти никакой процесс не делает. Таким образом, такой процесс должен быть перезапущен. Чтобы каждый процесс начал использовать новое имя хоста, их необходимо перезапустить. Обычно проще просто перезагрузить систему, чем перезапускать каждый сервис по отдельности.
источник
sudo /etc/init.d/network restart
кроме этого, перезапуская сеть на моем сервере с помощью этой команды, вы указываете на перезапуск любого запущенного процесса, который должен знать, что имя сервера является действительным. Договорились, что перезапуск хоста это исправит. Тем не менее, бывают случаи, когда я действительно хочу переименовать хост, но на самом деле не хочу его перезагружать. Есть мнениеsudo /etc/init.d/network restart
и его полезность для получения нового имени хоста после перезагрузки?/etc/init.d
системах systemd является неправильным способом. Это просто для обратной совместимости со старой Системой V.Вы можете изменить имя хоста в ядре, используя:
В Linux это практически равно одному из следующих:
Это не зависит от systemd (в отличие от hostnamectl, который требует systemd-hostname) или любых других нестандартных инструментов, и часто (особенно в системах с шеллскриптом-init) в первую очередь задается исходное имя хоста.
Большинство программ и сервисов фактически не используют имя хоста; некоторые из них (например, Postfix или службы, использующие Kerberos) могут быть перезапущены один за другим.
(Некоторые программы кэшируют имя хоста до перезапуска, другие запрашивают его каждый раз, когда им это необходимо. Программы также имеют возможность опроса (2) / proc / sys / kernel / hostname для получения уведомлений об изменениях, но немногие делают.)
источник
/etc/postfix/main.cf
и/etc/mailname
поэтому их тоже нужно будет отредактировать.