Я хочу изменить имя хоста ОС, но не хочу перезапускать.
Я редактировал /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
, чтобы теперь она содержала ваше новое имя хоста. (Это необходимо, иначе многие команды перестанут работать.)
Имя по умолчанию было задано при установке Ubuntu. Вы можете легко изменить его на все, что хотите, как на рабочем столе, так и на сервере, отредактировав хосты и файлы имен хостов. Ниже описано, как:
sudo hostname NEW_NAME_HERE
Это изменит имя хоста до следующей перезагрузки. Изменение не будет сразу видно в вашем текущем терминале. Запустите новый терминал, чтобы увидеть новое имя хоста.
Чтобы изменить имя навсегда, запустите команду для редактирования файлов хоста:
sudo -H gedit / etc / hostname
и sudo -H gedit / etc / hosts
Для сервера Ubuntu без графического интерфейса выполните sudo vi / etc / hostname
и sudo vi / etc / hosts
и отредактируйте их один за другим.
В обоих файлах измените имя на свое и сохраните его.
Наконец, перезагрузите компьютер, чтобы применить изменения.
Это без перезагрузки и без использования терминала.
Открыть терминал. Посмотрите сами.
(Для старых версий текстовое поле не редактируется.)
Решение, основанное на ответе сообщества DigitalOcean.
Отредактируйте файл hosts .
$ sudo nano / etc / hosts
Замените старое имя новым.
127.0.0.1 localhost newname
Установите новое имя хоста.
$ sudo hostnamectl set-hostname newname
Изменение имени хоста или имени компьютера в 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), будет сохранено при перезагрузке системы (и будет установлено с использованием той же службы).
sudo hostname your-new-name
sudo /etc/init.d/networking restart
Это должно выполнить ту работу, которая, как я думаю
/etc/hostname
на нужное имя хоста (вы можете редактировать с помощью sudo nano /etc/hostname
)/etc/hosts
замените запись рядом с 127.0.1. 1 с нужным именем хоста (вы можете редактировать с помощью sudo nano /etc/hosts
)sudo service hostname; sudo service network restart
Без перезапуска:
/ etc / hostname
/ etc / hosts
соответственно sudo sysctl kernel.hostname = mynew.local.host
Проверьте свое текущее имя хоста с помощью hostname -f
Команда hostnamectl
является частью установки по умолчанию как в настольной, так и в серверной версиях.
Она объединяет установку имени хоста через ] hostname
команда и редактирование / etc / hostname
. Помимо установки статического имени хоста, он может установить «красивое» имя хоста, которое не используется в Ubuntu. К сожалению, редактирование / etc / hosts
по-прежнему должно выполняться отдельно.
hostnamectl set-hostname new-hostname
Эта команда является частью пакета systemd-services
(который, начиная с Ubuntu 14.04, также включает timedatectl
и localectl
команды). Поскольку Ubuntu переходит на systemd
, будущее за этим инструментом.
Вот сценарий, который изменяет имя хоста предписанным способом. Это гарантирует, что не только 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}')"
Хотя описанные выше подходы ( 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
Чтобы получить текущее имя хоста:
cat /etc/hostname
Это может быть изменен в любом текстовом редакторе. Вам также потребуется обновить запись, отличную от localhost, до 127.0.0.1 в /etc/hosts.
Я прочитал ответы, но я думаю, что, вероятно, вы ищу это:
Просто выполните эти две команды после редактирования файла / etc / hostname
.
$ sudo service hostname restart
$ exec bash
Вот и все. Нет необходимости перезагружать. Также убедитесь, что вы также изменили имя в файле / etc / hosts
.
Классический ответ на вопрос исходного автора состоит в том, что после редактирования / etc / hostname
вы применяете его без перезапуска, запустив имя хоста (1) с параметром -F
( - файл
) от имени пользователя root:
sudo hostname -F /etc/hostname
Имя хоста (5) обработка с помощью / etc / hostname
и указанная программа была такой же в Debian и его производных уже более двадцати лет, и пакет, обеспечивающий ее , был помечен ] essential и required , а IIRC сценарии инициализации буквально использовали одно и то же в течение десятилетий ( /etc/init/hostname.conf
все еще содержит это), поэтому у меня есть Сказать, что я искренне озадачен, как никто об этом уже не упомянул :)