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

У меня было множество устройств на голой установке и получил это на 12.04 (последняя альтернативная ручная установка). Вместо того, чтобы отслеживать, где вы указываете GRUB, я просто согласился и переместил загрузочный SSD в порт sata-0, чтобы он отображался как sda.

1
задан 28 August 2014 в 01:08

12 ответов

Ubuntu 13.04 onwards

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

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

hostnamectl set-hostname new-hostname

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

234
ответ дан 25 May 2018 в 15:57
  • 1
    Обратите внимание, что это недоступно повсюду. Просто посмотрел мою установку Ubuntu 14.04 LTS ARM-7, а hostnamectl не существует. Угадайте, какие вкусы Ubuntu еще не используют systemd. – Stéphane 6 July 2015 в 05:52
  • 2
    @ Stéphane команды являются частью пакета systemd, но они доступны независимо. В этом случае 13.04-14.10 не используют systemd как init, по этой команде. – muru 6 July 2015 в 08:05
  • 3
    @muru, вы показываете 2 элемента: редактирование /etc/hosts и вызов hostnamectl. Я думаю, что, возможно, должен быть третий элемент, который будет похож на export HOSTNAME=xxx. Также порядок может иметь значение. У меня проблемы с вызовом sudo, если порядок неправильный. Я полагаю, что sudo зависит от /etc/hosts, поэтому лучше сделать это сначала, если для любой из двух других операций требуется sudo. – H2ONaCl 31 January 2017 в 17:54
  • 4
    @ H2ONaCl переменная оболочки устанавливается при запуске, просто откройте другую оболочку и переменная hostname должна быть в порядке. Что касается sudo, ошибка разрешения имени хоста никогда не мешала мне что-либо делать. – muru 31 January 2017 в 17:57
  • 5
    @ H2ONaCl ах, но переменная HOSTNAME не стандартная - мишень IIRC и ksh ее не имеет, zsh использует HOST, так что, поскольку переменные оболочки идут, это дно кучи. – muru 31 January 2017 в 18:14

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

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

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

nano /etc/hostname 
[d4 ] Измените / 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 / хостов и изменить старую строку 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), будет сохранено при перезагрузке системы (и будет установлено с использованием той же службы).

56
ответ дан 25 May 2018 в 15:57
  • 1
    В Ubuntu 12.10 последняя часть не работает со следующим сообщением об ошибке sudo: unable to resolve host old-hostname. Для этой части решение @jesperado работает хорошо. – Frédéric Grosshans 23 November 2012 в 16:54
  • 2
    Если вы не обновляете /etc/hosts, вещи mant начинают сбой 12.04.2 LTS, включая команду w, Apache, /sbin/reboot и многое другое. Обязательно обновите /etc/hosts – Josh 14 August 2013 в 01:10
  • 3
    Вы ссылаетесь на оба 127.0.0.1 для localhost и 127.0.1.1 для пользовательского имени хоста. Правильно? Затем, в конце вашего ответа, для действия без репота вы ссылаетесь на /etc/hosts и 127.0.0.1 newhost oldhost. Таким образом, нет необходимости в адресе 127.0.1.1? – Nikos Alexandris 19 December 2015 в 15:22
  • 4
    не работал для меня. я должен был использовать sudo nano /etc/hosts, чтобы изменения вступили в силу; без sudo, просто nano /etc/hosts не сохранил изменения – conman253 31 January 2018 в 03:30
  • 5
    В чем разница между перезагрузкой и перезагрузкой? – storm 18 April 2018 в 14:45

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

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

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

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

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

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

40
ответ дан 25 May 2018 в 15:57

Вот сценарий, который изменяет имя хоста предписанным образом. Это гарантирует, что не только функции 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}')"
15
ответ дан 25 May 2018 в 15:57
  • 1
    Что делает последняя строка в скрипте su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"? Просто любопытно. – Fr0zenFyr 10 March 2014 в 18:22
  • 2
    @ Fr0zenFyr: он принимает действительный токен аутентификации X11 (xauth list) и заменяет старое имя хоста новым именем хоста (sed). Затем awk помещает кавычки вокруг первого аргумента в xauth add, потому что формат ввода и вывода xauth не симметричен. – Lucas 12 March 2014 в 03:36
  • 3
    Спасибо за объяснение. Я всегда перезагружался, чтобы изменения вступили в силу. +1 – Fr0zenFyr 12 March 2014 в 10:02
  • 4
    @trakz: Фактически 127.a.b.c независимо от числа, является локальным хостом в соответствии с IETF RFC. (большинство людей просто этого не знают, но, как правило, нет, отредактируйте одобренные) – Fabby 8 January 2015 в 01:25

Без перезапуска:

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

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

11
ответ дан 25 May 2018 в 15:57
  • 1
    С 16.04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Возможно, это CT в Proxmox. – Pablo Bianchi 23 May 2018 в 01:44

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

cat /etc/hostname

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

7
ответ дан 25 May 2018 в 15:57
  • 1
    Или просто запустите команду " hostname " из командной строки. – elomage 1 October 2015 в 16:28
Замените содержимое /etc/hostname на нужное имя хоста (вы можете редактировать с помощью sudo nano /etc/hostname). В /etc/hosts замените запись рядом с 127.0.1.1 на нужное имя хоста (вы можете редактировать с помощью sudo nano /etc/hosts). Выполнить sudo service hostname restart; sudo service networking restart
4
ответ дан 25 May 2018 в 15:57

Ubuntu 16.04

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

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

Открыть терминал. Посмотрите сами.

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

4
ответ дан 25 May 2018 в 15:57
sudo hostname your-new-name
sudo /etc/init.d/networking restart

Это должно сработать, я думаю,

3
ответ дан 25 May 2018 в 15:57

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

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

$ sudo service hostname restart
$ exec bash

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

3
ответ дан 25 May 2018 в 15:57
  • 1
    В отличие от многих других ответов, это не обновляет /etc/hosts (я подтвердил 14.04). – IsaacS 22 May 2018 в 03:19

Классический ответ на вопрос оригинального плаката заключается в том, что после того, как вы отредактировали /etc/hostname, вы примените его без перезапуска, запустив имя хоста (1) с параметром -F (--file) в качестве пользователя root: [ ! d0]

sudo hostname -F /etc/hostname

Обработка hostname (1) с /etc/hostname и указанной программой была одинаковой в Debian и ее производных уже более двадцати лет, а пакет, предоставляющий ее был отмечен как существенный, так и требуемый, и IIRC сценарии инициализации буквально использовали одно и то же в течение десятилетий (/etc/init/hostname.conf все еще содержит его), поэтому я должен сказать, что я действительно озадачен тем, как об этом никто уже не упоминал:)

2
ответ дан 25 May 2018 в 15:57

Ubuntu 16.04

Решение основано на ответе от DigitalOcean Comunity.

Редактировать файл hosts.

$ sudo nano /etc/hosts

Заменить hosts с новым.

127.0.0.1 localhost newname

Установите новое имя хоста.

$ sudo hostnamectl set-hostname newname

1
ответ дан 25 May 2018 в 15:57

Другие вопросы по тегам:

Похожие вопросы: