Вопрос Как изменить имя хоста без перезапуска?


Я хочу изменить имя хоста ОС, но я не хочу перезапускать.

Я редактировал /etc/hostname но для перезагрузки требуется перезапуск. Как этого избежать?


456
2017-12-14 08:56


происхождения


Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию запускает cloud-init, который управляет именем хоста при загрузке. - nslntmnx


ответы:


Это просто. Просто нажмите значок Gear (расположенный в правом верхнем углу экрана), откройте экран «Об этом компьютере» (расположенный на значке Gear) и отредактируйте «Имя устройства».

Или, в терминале, используйте следующую команду:

sudo hostname your-new-name

Это приведет к тому, что имя хоста будет присвоено вашему новому имени до перезапуска. Видеть man hostname а также Как изменить имя компьютера? для дополнительной информации. Не используй _ на ваше имя.

Заметка

После перезапуска ваши изменения в /etc/hostname будет использоваться, поэтому (как вы сказали в вопросе), вы все равно должны использовать

sudo -H gedit /etc/hostname

(или какой-либо другой редактор), чтобы файл содержал имя хоста.

Чтобы проверить правильность настройки файла, запустите:

sudo service hostname start

Вы также должны отредактировать /etc/hosts и измените строку, которая гласит:

127.0.1.1     your-old-hostname

так что теперь он содержит ваше новое имя хоста. (Это необходимо, иначе многие команды перестанут функционировать.)


593
2017-12-14 10:27



я не хочу перезапускать - Deepak Rajput
Я знаю. поэтому вы должны использовать команду «hostname». Я просто хотел уточнить, что команда «hostname» изменяет только имя хоста, пока вы не перезапустите / crash / etc. После этого он снова будет читать имя из файла. - jasperado
Зависит. Если вы ввели команду, вам не нужно перезапускать. Имя хоста уже изменено. Но только UNTIL ваш следующий перезапуск. - jasperado
Обратите внимание, что вам также необходимо изменить /etc/hosts (см. другие ответы) - JB.
Короче говоря, хотя hostname приведет к немедленному действию нового имени, оно не является «постоянным», если вы также не измените /etc/hostname а также /etc/hosts, так как это файлы, которые будут считаны после перезагрузки или сбоя, что, конечно, вы не можете ожидать раньше времени. - Tim Parenti


Ubuntu 13.04 и далее

hostnamectl команда является частью установки по умолчанию как на рабочем столе, так и на сервере.

Он объединяет настройку имени хоста через hostname команда и редактирование /etc/hostname, Помимо установки статического имени хоста, он может установить «симпатичное» имя хоста, которое не используется в Ubuntu. К сожалению, редактирование /etc/hosts все еще нужно делать отдельно.

hostnamectl set-hostname new-hostname

Эта команда является частью systemd-services пакет (который, начиная с Ubuntu 14.04, также включает в себя timedatectl а также localectl команд). Поскольку Ubuntu переносится на systemd, этот инструмент - это будущее.


250
2017-08-27 21:03



Обратите внимание, что это недоступно повсюду. Просто посмотрел мою установку Ubuntu 14.04 LTS ARM-7 и hostnamectl не существует. Угадайте, какие вкусы Ubuntu еще не используют systemd. - Stéphane
@ Stéphane команды являются частью пакета systemd, но они доступны независимо. В этом случае 13.04-14.10 не используют systemd как init, по этой команде. - muru
@ H2ONaCl переменная оболочки устанавливается при запуске, просто откройте другую оболочку и переменная hostname должна быть в порядке. Что касается sudo, ошибка разрешения имени хоста никогда не мешала мне что-либо делать. - muru
@ H2ONaCl ах, но переменная HOSTNAME не стандартная - мишень IIRC и ksh ее не имеет, zsh использует HOST, так что, поскольку переменные оболочки идут, это дно кучи. - muru
Все еще работает в Ubuntu 18.04 LTS. - donlucacorleone


Без перезагрузки

Изменение имени хоста или компьютера в ubuntu без перезагрузки

Измените / etc / hostname и измените на новое значение,

nano /etc/hostname 

Измените / etc / hosts и измените старую строку 127.0.1.1 на новое имя хоста

127.0.0.1   localhost
127.0.1.1   ubuntu.local    ubuntu   # change to your new hostname/fqdn

Заметка : я прочитал его на форуме> Изменить / etc / hosts и изменил старую строку 127.0.1.1 на ваше новое имя хоста (если вы этого не сделаете, вы больше не сможете использовать sudo.Если вы уже сделали это, нажмите ESC в меню grub, выберите восстановление и отредактируйте файл хоста для правильных настроек)

Теперь после перезагрузки ваше имя хоста будет новым, которое вы выбрали

Без перезагрузки

Изменить без перезагрузки, вы можете просто использовать hostname.sh после редактирования / etc / hostname. Вы должны сохранить оба имени хоста в / etc / hosts (127.0.0.1 newhost oldhost), пока не выполните следующую команду:

sudo service hostname start

Заметка : Выше команды, чтобы сделать изменение активным. Имя хоста, сохраненное в этом файле (/ etc / hostname), будет сохранено при перезагрузке системы (и будет установлено с использованием той же службы).


58
2018-02-13 20:16



В Ubuntu 12.10 последняя часть не работает со следующим сообщением об ошибке sudo: unable to resolve host old-hostname, Для этой части решение @jesperado работает хорошо. - Frédéric Grosshans
Если вы не обновляете /etc/hosts, mant вещи начинают терпеть неудачу 12.04.2 LTS, включая w команда, Apache, /sbin/reboot и многое другое. Обязательно обновите /etc/hosts - Josh
Вы ссылаетесь на оба 127.0.0.1 для localhost а также 127.0.1.1 для пользовательского имени хоста. Правильно? Затем, в конце вашего ответа, за действие без репота, вы ссылаетесь /etc/hosts а также 127.0.0.1 newhost oldhost, Таким образом, нет необходимости в 127.0.1.1 адрес? - Nikos Alexandris
не работал для меня. я должен был использовать sudo nano /etc/hosts для вступления изменений в силу; без sudo, просто nano /etc/hosts не сохранили изменения - conman253
В чем разница между перезагрузкой и перезагрузкой? - storm


Имя по умолчанию было установлено при установке Ubuntu. Вы можете легко изменить его на все, что угодно, на рабочем столе и сервере, отредактировав файлы хостов и файлов хостов. Ниже показано, как:

  1. Нажмите CtrlAltT на клавиатуре, чтобы открыть терминал. Когда он откроется, запустите следующую команду: sudo hostname NEW_NAME_HERE

Это изменит имя хоста до следующей перезагрузки. Это изменение не будет видно сразу в вашем текущем терминале. Запустите новый терминал, чтобы увидеть новое имя хоста.

  1. Чтобы изменить имя навсегда, запустите команду для редактирования файлов хоста:

    sudo -H gedit /etc/hostname а также sudo -H gedit /etc/hosts

Для сервера Ubuntu без GUI, запустите sudo vi /etc/hostname а также sudo vi /etc/hosts и редактировать их по одному. В обоих файлах измените имя на то, что вы хотите, и сохраните их.

Наконец, перезагрузите компьютер, чтобы применить изменения.


42
2017-11-01 22:47





Вот сценарий, который изменяет имя хоста предписанным образом. Это гарантирует, что не только sudo но также приложения X11 продолжают функционировать без необходимости перезагрузки.

Применение: sudo ./change_hostname.sh new-hostname

#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"

16
2018-03-07 06:30



Что делает последняя строка в скрипте su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')" делать? Просто любопытно. - Fr0zenFyr
@ Fr0zenFyr: он принимает действительный токен аутентификации X11 (xauth list) и заменяет прежнее имя хоста новым именем хоста (sed). затем awk ставит кавычки вокруг первого аргумента xauth add потому как xauthФормат ввода и вывода не симметричен. - Lucas
Спасибо за объяснение. Я всегда перезагружался, чтобы изменения вступили в силу. +1 - Fr0zenFyr
@trakz: Фактически 127.a.b.c независимо от числа, является локальным хостом в соответствии с IETF RFC. (большинство людей просто этого не знают, но, как правило, нет, отредактируйте одобренные) - Fabby


Без перезагрузки:

  1. изменить имя хоста в /etc/hostname
  2. Обновить /etc/hosts соответственно
  3. sudo sysctl kernel.hostname=mynew.local.host

Проверьте текущее имя хоста hostname -f


12
2018-03-31 14:46



С 16.04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system, Возможно, это CT в Proxmox. - Pablo Bianchi


Чтобы получить текущее имя хоста:

cat /etc/hostname

Это можно изменить в любом текстовом редакторе. Вам также необходимо обновить запись, отличную от localhost, против 127.0.0.1 в / etc / hosts.


7
2017-09-14 01:12



Или просто запустите команду «hostname» из командной строки. - elomage


  1. Заменить содержание /etc/hostname с желаемым именем хоста (вы можете редактировать с помощью sudo nano /etc/hostname)
  2. В /etc/hosts, замените запись рядом с 127.0.1.1 с желаемым именем хоста (вы можете редактировать с помощью sudo nano /etc/hosts)
  3. казнить sudo service hostname restart; sudo service networking restart

4
2018-05-08 18:26



Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию запускает cloud-init, который управляет именем хоста при загрузке. - nslntmnx
@nslntmnx вы уверены в этом? Я вижу в облаке-config.txt # if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it. В настоящее время у меня нет Ubuntu 18, поэтому я не могу проверить его до выходных. - George


Ubuntu 16.04

Это без перезапуск и без использования терминала.

  • Идти к Настройки системы -> Подробности,
  • Вот оно. рядом Имя устройства, есть текстовое поле.
  • Отредактируйте текстовое поле и закройте окно.

Открытый терминал. Смотрите сами.

(Для более старых версий текстовое поле недоступно для редактирования).


4
2018-03-13 18:26





sudo hostname your-new-name
sudo /etc/init.d/networking restart

Это должно делать то, что я думаю


3
2017-12-20 12:43



Я не думаю, что это выдержит перезагрузку - Collin Anderson
Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию запускает cloud-init, который управляет именем хоста при загрузке. - nslntmnx


Я прочитал ответы, Но я думаю, вероятно, вы ищете это:

Просто выполните эти две команды после редактирования /etc/hostname файл.

$ sudo service hostname restart
$ exec bash

Это все. Не нужно перезапускать. Также убедитесь, что вы также изменили имя в /etc/hosts файл.


3
2017-09-28 18:55



В отличие от многих других ответов, это не обновляет /etc/hosts (Я подтвердил 14.04). - IsaacS
Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию запускает cloud-init, который управляет именем хоста при загрузке. - nslntmnx