Я хочу изменить имя хоста ОС, но не хочу перезапускать.
Я отредактировал, /etc/hostname
но это требует перезапуска, чтобы быть осуществленным. Как этого избежать?
Я хочу изменить имя хоста ОС, но не хочу перезапускать.
Я отредактировал, /etc/hostname
но это требует перезапуска, чтобы быть осуществленным. Как этого избежать?
Ответы:
Это просто. Просто нажмите на значок шестеренки (расположен в правом верхнем углу экрана), откройте экран «Об этом компьютере» (находится на значке шестеренки) и отредактируйте «Имя устройства».
Или в терминале используйте следующую команду:
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
так что теперь он содержит ваше новое имя хоста. (Это необходимо, иначе многие команды перестанут работать.)
/etc/hosts
(см. Другие ответы)
hostname
новое имя вступает в силу немедленно, оно не является «постоянным», если вы не измените его, /etc/hostname
и /etc/hosts
, поскольку это файлы, которые будут прочитаны после перезапуска или сбоя, что, конечно, может не быть ожидая раньше времени.
Эта hostnamectl
команда является частью установки по умолчанию в версиях для настольных компьютеров и серверов.
Он сочетает в себе установку имени хоста с помощью hostname
команды и редактирования /etc/hostname
. Помимо установки статического имени хоста, он может установить «красивое» имя хоста, которое не используется в Ubuntu. К сожалению, редактирование /etc/hosts
все еще должно быть сделано отдельно.
hostnamectl set-hostname new-hostname
Эта команда является частью systemd-services
пакета (который, как в Ubuntu 14.04, также включает в себя timedatectl
и localectl
команды). По мере перехода на Ubuntu systemd
этот инструмент - будущее.
hostnamectl
не существует. Думаю, некоторые версии Ubuntu еще не используют systemd.
Изменение имени хоста или компьютера в 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, выберите recovery и отредактируйте файл хоста с правильными настройками)
Теперь после перезагрузки, ваше имя хоста будет новым, которое вы выбрали
Чтобы изменить без перезагрузки , вы можете просто использовать hostname.sh после редактирования / etc / hostname. Вы должны хранить оба имени хоста в / etc / hosts (127.0.0.1 newhost oldhost), пока не выполните следующую команду:
sudo service hostname start
Примечание : выше команды, чтобы сделать изменение активным. Имя хоста, сохраненное в этом файле (/ etc / hostname), будет сохранено при перезагрузке системы (и будет установлено с использованием той же службы).
sudo: unable to resolve host old-hostname
. С этой стороны, решение @jesperado работает хорошо.
/etc/hosts
, mant вещи начнут давать сбой на 12.04.2 LTS, включая w
команду, Apache /sbin/reboot
и многое другое. Обязательно обновите/etc/hosts
127.0.0.1
для localhost
и 127.0.1.1
для пользовательского имени хоста. Правильно? Затем, в конце вашего ответа, для действия без перезагрузки , вы ссылаетесь /etc/hosts
и 127.0.0.1 newhost oldhost
. Итак, 127.0.1.1
адрес не нужен ?
sudo nano /etc/hosts
чтобы изменения вступили в силу; без sudo, просто nano /etc/hosts
не сохранили изменения
Имя по умолчанию было установлено при установке Ubuntu. Вы можете легко изменить его на рабочий стол и сервер, отредактировав файлы hosts и hostname. Ниже как:
sudo hostname NEW_NAME_HERE
Это изменит имя хоста до следующей перезагрузки. Изменение не будет видно сразу в вашем текущем терминале. Запустите новый терминал, чтобы увидеть новое имя хоста.
Чтобы изменить имя навсегда, выполните команду для редактирования файлов хоста:
sudo -H gedit /etc/hostname
а также sudo -H gedit /etc/hosts
Для сервера Ubuntu без графического интерфейса, запускать sudo vi /etc/hostname
и sudo vi /etc/hosts
и редактировать их по одному. В обоих файлах измените имя на то, что вы хотите, и сохраните их.
Наконец, перезагрузите компьютер, чтобы изменения вступили в силу.
Вот скрипт, который меняет имя хоста в установленном порядке. Это гарантирует, что не только, 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}')"
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
? Просто любопытно.
xauth list
) и заменяет старое имя хоста новым hostname ( sed
). Затем awk
заключает в кавычки первый аргумент, xauth add
потому что xauth
формат ввода и вывода не симметричен.
Без перезапуска:
/etc/hostname
/etc/hosts
соответственноsudo sysctl kernel.hostname=mynew.local.host
Проверьте ваше текущее имя хоста с hostname -f
sudo: unable to resolve host oldname
, sysctl: setting key "kernel.hostname": Read-only file system
. Может быть, потому что это КТ внутри Proxmox.
Хотя вышеуказанные подходы ( hostnamectl
и etc/hostname
т. Д.) Работают для немедленного изменения имени хоста, с появлением cloud-init - который может контролировать настройку имени хоста - среди многих других вещей. Таким образом, он не будет зависать после перезагрузки, если установлен cloud-init. Если вы хотите, чтобы изменение сохранялось после перезагрузки, вам нужно отредактировать конфигурационные файлы cloud-init, отключив модуль установки / обновления имени хоста cloud-init :
sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
или полностью отключить cloud-init:
sudo touch /etc/cloud/cloud-init.disabled
/etc/cloud/cloud.cfg
. Какое название пакета? Просто cloud-init
?
Чтобы получить ваше текущее имя хоста:
cat /etc/hostname
Это можно изменить в любом текстовом редакторе. Вам также необходимо обновить запись, отличную от localhost, до 127.0.0.1 в / etc / hosts.
/etc/hostname
на желаемое имя хоста (вы можете редактировать с помощью sudo nano /etc/hostname
)/etc/hosts
, замените запись рядом с 127.0. 1 .1 с желаемым именем хоста (вы можете редактировать с помощью sudo nano /etc/hosts
)sudo service hostname restart; sudo service networking restart
# 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, поэтому я не могу протестировать его до выходных.
Это без перезапуска и без использования терминала.
Откройте терминал. Смотрите сами.
(Для более старых версий текстовое поле не редактируется.)
Классический ответ на оригинальный вопрос автора состоит в том, что после редактирования /etc/hostname
вы можете применить его без перезапуска, запустив hostname (1) с опцией -F
( --file
) в качестве пользователя root:
sudo hostname -F /etc/hostname
Имя хоста (5) обработки с /etc/hostname
и указанная программа теперь была такой же в Debian и его производных на протяжении более двадцати лет, и пакет обеспечения его было помечено необходимым и требуется , и IIRC скрипты инициализации буквально использовали то же самое для десятилетия ( /etc/init/hostname.conf
все еще есть), поэтому я должен сказать, что я искренне озадачен тем, как никто уже не упомянул об этом :)
sudo hostname your-new-name
sudo /etc/init.d/networking restart
Это должно сделать работу, я думаю
Я прочитал ответы, но я думаю, что, вероятно, вы ищете это:
Просто выполните эти две команды после редактирования /etc/hostname
файла.
$ sudo service hostname restart
$ exec bash
Вот и все. Не нужно перезапускать. Также убедитесь, что вы также измените имя в /etc/hosts
файле.
/etc/hosts
(я подтвердил 14.04).
Решение основано на ответе от DigitalOcean Comunity.
Отредактируйте файл hosts .
$ sudo nano /etc/hosts
Замените старое имя новым.
127.0.0.1 localhost newname
Настройте новое имя хоста.
$ sudo hostnamectl set-hostname newname