¿Cómo cambio el nombre de host sin reiniciar?

497

Quiero cambiar el nombre de host del sistema operativo pero no quiero reiniciar.

He editado /etc/hostnamepero requiere un reinicio para implementarse. ¿Cómo evitar esto?

Deepak Rajput
fuente
3
Advertencia: no funcionará con Ubuntu 18+, que ejecuta cloud-init de forma predeterminada, que controla el nombre de host en el arranque.
nslntmnx
@nslntmnx, gracias!
MiB

Respuestas:

642

Es fácil. Simplemente haga clic en el ícono de Gear (ubicado en la esquina superior derecha de la pantalla), abra la pantalla "Acerca de esta computadora" (ubicada en el ícono de Gear) y edite "Nombre del dispositivo".

O, en una terminal, use el siguiente comando:

sudo hostname your-new-name

Esto establecerá el nombre de host en your-new-name hasta que reinicie. ¿Ver man hostnamey cómo cambio el nombre de la computadora? para mayor información. No lo use _en su nombre.

Nota

Después de reiniciar /etc/hostname, se usarán sus cambios , por lo que (como dijo en la pregunta), aún debe usar

sudo -H gedit /etc/hostname

(o algún otro editor) para que el archivo contenga el nombre de host.

Para probar que el archivo está configurado correctamente, ejecute:

sudo service hostname start

También debe editar /etc/hostsy cambiar la línea que dice:

127.0.1.1     your-old-hostname

para que ahora contenga su nuevo nombre de host. (Esto es necesario; de lo contrario, muchos comandos dejarán de funcionar).

jasperado
fuente
44
no quiero reiniciar
Deepak Rajput
23
Lo sé. es por eso que debes usar el comando 'hostname'. Solo quería aclarar que el comando 'hostname' solo cambia el nombre del host hasta que reinicie / bloquee / etc. Luego leerá el nombre del archivo nuevamente.
jasperado
55
Depende Si ingresó el comando, no necesita reiniciar. El nombre de host ya ha cambiado. Pero solo HASTA su próximo reinicio.
jasperado
19
Tenga en cuenta que también tiene que cambiar el /etc/hosts(ver otras respuestas)
JB.
99
En resumen, aunque hostnamehará que el nuevo nombre tenga efecto inmediato, no es "permanente" a menos que también cambie /etc/hostnamey /etc/hosts, dado que esos son los archivos que se leerán después de un reinicio o un bloqueo, que por supuesto, es posible que no esperando de antemano.
Tim Parenti
280

Ubuntu 13.04 en adelante

El hostnamectlcomando forma parte de la instalación predeterminada en las ediciones Desktop y Server.

Combina la configuración del nombre de host mediante el hostnamecomando y la edición /etc/hostname. Además de configurar el nombre de host estático, puede establecer el nombre de host "bonito", que no se usa en Ubuntu. Desafortunadamente, la edición /etc/hostsaún debe hacerse por separado.

hostnamectl set-hostname new-hostname

Este comando es parte del systemd-servicespaquete (que, a partir de Ubuntu 14.04, también incluye los comandos timedatectly localectl). A medida que Ubuntu migra systemd, esta herramienta es el futuro.

muru
fuente
1
Tenga en cuenta que esto no está disponible en todas partes. Acabo de ver mi instalación de Ubuntu 14.04 LTS ARM-7, y hostnamectlno existe. Supongo que algunos sabores de Ubuntu todavía no usan systemd.
Stéphane
1
@ Stéphane los comandos son parte de la suite systemd, pero están disponibles de forma independiente. En este caso, 13.04-14.10 no usa systemd como init, por el comando está disponible.
muru
1
@ H2ONaCl la variable de shell se establece en el inicio, simplemente abra otro shell y la variable de nombre de host debería estar bien. En cuanto a sudo, el error sobre la resolución del nombre de host nunca me ha impedido hacer nada.
muru
1
@ H2ONaCl ah, pero la variable HOSTNAME no es estándar: el guión IIRC y ksh no lo tienen, zsh usa HOST, por lo que, en lo que respecta a las variables de shell, es la parte inferior del montón.
muru
3
Todavía funciona en Ubuntu 18.04 LTS.
LucaM
63

Sin reiniciar

Cambiar el nombre de host o el nombre de la computadora en ubuntu sin reiniciar

Edite / etc / hostname y cambie al nuevo valor,

nano /etc/hostname 

Edite / etc / hosts y cambie la antigua línea 127.0.1.1 a su nuevo nombre de host

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

Nota : lo he leído en un foro> Editar / etc / hosts y cambiar la antigua línea 127.0.1.1 a su nuevo nombre de host (si no lo hace, ya no podrá usar sudo. Si ya lo ha hecho) , presione ESC en el menú de grub, elija recuperación y edite su archivo host a la configuración correcta)

Ahora, después de reiniciar, su nombre de host será el nuevo que eligió

Sin reiniciar

Para cambiar sin reiniciar , puede usar hostname.sh después de editar / etc / hostname. Debe mantener ambos nombres de host en / etc / hosts (127.0.0.1 newhost oldhost) hasta que ejecute el siguiente comando:

sudo service hostname start

Nota : Comando anterior para activar el cambio. El nombre de host guardado en este archivo (/ etc / hostname) se conservará al reiniciar el sistema (y se establecerá utilizando el mismo servicio).

Un cero
fuente
En Ubuntu 12.10, la última parte no funciona con el siguiente mensaje de error sudo: unable to resolve host old-hostname. Por esa parte, la solución @jesperado funciona bien.
Frédéric Grosshans el
3
Si no actualiza /etc/hosts, las cosas de mant comienzan a fallar en 12.04.2 LTS, incluido el wcomando, Apache /sbin/rebooty mucho más. Asegúrese de actualizar/etc/hosts
Josh
Usted hace referencia a ambos 127.0.0.1para localhosty 127.0.1.1para un nombre de host personalizado. ¿Derecho? Luego, hacia el final de su respuesta, para una acción sin rebot , usted hace referencia /etc/hostsy 127.0.0.1 newhost oldhost. Entonces, ¿no hay necesidad de una 127.0.1.1dirección?
Nikos Alexandris
1
No funcionó para mí. tuve que usar sudo nano /etc/hostspara que el cambio surta efecto; sin sudo, simplemente nano /etc/hostsno guardó el cambio
conman253
2
¿Cuál es la diferencia entre reiniciar y reiniciar?
tormenta
43

El nombre predeterminado se estableció cuando estaba instalando Ubuntu. Puede cambiarlo fácilmente a lo que desee en Desktop y Server editando los archivos hosts y hostname. A continuación se muestra cómo:

  1. Presione CtrlAltten el teclado para abrir el terminal. Cuando se abra, ejecute el siguiente comando:sudo hostname NEW_NAME_HERE

Esto cambiará el nombre de host hasta el próximo reinicio. El cambio no será visible inmediatamente en su terminal actual. Inicie una nueva terminal para ver el nuevo nombre de host.

  1. Para cambiar el nombre permanentemente, ejecute el comando para editar los archivos host:

    sudo -H gedit /etc/hostname y sudo -H gedit /etc/hosts

Para el servidor Ubuntu sin una interfaz gráfica de usuario, ejecutar sudo vi /etc/hostnamey sudo vi /etc/hostsy les editar uno por uno. En ambos archivos, cambie el nombre a lo que desee y guárdelos.

Finalmente, reinicie su computadora para aplicar los cambios.

Mohsen Gh.
fuente
16

Aquí hay un script que cambia el nombre de host de la manera prescrita. Asegura que no solo las sudoaplicaciones X11 continúen funcionando sin necesidad de reiniciar.

Uso: 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}')"
Lucas
fuente
¿Qué hace la última línea del script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"? Sólo curioso.
Fr0zenFyr
44
@ Fr0zenFyr: toma un token de autenticación X11 válido ( xauth list) y reemplaza el antiguo nombre de host con el nuevo nombre de host ( sed). Luego awkpone comillas alrededor del primer argumento xauth addporque xauthlos formatos de entrada y salida no son simétricos.
Lucas
Gracias por la explicación. Siempre había reiniciado para que los cambios tuvieran efecto. +1
Fr0zenFyr
@trakz: en realidad 127.abc sea cual sea el número, es todo localhost según IETF RFC. (la mayoría de la gente simplemente no sabe esto, pero como la mayoría no lo sabe, edición aprobada)
Fabby
14

Sin reiniciar:

  1. cambiar el nombre de host en /etc/hostname
  2. actualizar en /etc/hostsconsecuencia
  3. sudo sysctl kernel.hostname=mynew.local.host

Verifique su nombre de host actual con hostname -f

Tombart
fuente
Con 16.04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Tal vez porque es una CT dentro de Proxmox.
Pablo A
14

Cloud-init (Ubuntu 18+) nombre de host persistencia

Mientras que los enfoques anteriores ( hostnamectl, etc/hostname, etc.) trabajar por el cambio nombre de host inmediata, con la llegada de la nube-init - que puede controlar la configuración del nombre de host - amoungst muchas otras cosas. Por lo tanto, no se pegará después de un reinicio si está instalado cloud-init. Si desea que el cambio permanezca después de un reinicio, deberá editar los archivos de configuración de cloud-init , deshabilitar el módulo de configuración / actualización de nombre de host de cloud-init :

sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg

o deshabilitar cloud-init por completo:

sudo touch /etc/cloud/cloud-init.disabled
Pierz
fuente
1
Por favor vota esta respuesta. Esto funciono muy bien para mi. Otras respuestas no funcionan con la adopción de cloud-init.
nslntmnx
@nslntmnx ¿viene instalado por defecto en el escritorio 18.04, solo en el servidor? El escritorio no tiene /etc/cloud/cloud.cfg. ¿Cuál es el nombre del paquete? Solo cloud-init?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Además, ¿hay alguna forma de cambiar el nombre de host con cloud-init en lugar de simplemente deshabilitar su anulación?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Sí, puede cambiar muchas configuraciones usando cloud-init; vea el enlace de documentos en mi respuesta; aquí hay un enlace para configurar el nombre de host: cloudinit.readthedocs.io/en/latest/topics/…
Pierz el
7

Para obtener su nombre de host actual:

cat /etc/hostname

Esto se puede cambiar en cualquier editor de texto. También necesitaría actualizar la entrada que no sea localhost contra 127.0.0.1 en / etc / hosts.

tagMacher
fuente
1
O simplemente ejecute el comando "hostname" desde la línea de comandos.
elomage
4
  1. Reemplace el contenido de /etc/hostnamecon el nombre de host deseado (puede editar con sudo nano /etc/hostname)
  2. En /etc/hosts, reemplace la entrada junto a 127.0. 1 .1 con el nombre de host deseado (puede editar con sudo nano /etc/hosts)
  3. Ejecutar sudo service hostname restart; sudo service networking restart
Jorge
fuente
Advertencia: no funcionará con Ubuntu 18+, que ejecuta cloud-init de forma predeterminada, que controla el nombre de host en el arranque.
nslntmnx
@nslntmnx, ¿estás seguro de esto? Veo en cloud-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.que actualmente no tengo Ubuntu 18, así que no puedo probarlo hasta el fin de semana.
George
4

Ubuntu 16.04

Esto es sin reiniciar y sin ningún uso de terminal.

  • Vaya a Configuración del sistema -> Detalles .
  • Ahí está. Al lado del nombre del dispositivo , hay un cuadro de texto.
  • Editar cuadro de texto y cerrar ventana.

Terminal abierto Compruébalo por ti mismo.

(Para versiones anteriores, el cuadro de texto no es editable).

shonku
fuente
4

La respuesta clásica a la pregunta del póster original es que, una vez que haya editado /etc/hostname, puede hacer que se aplique sin reiniciar ejecutando hostname (1) con la opción -F( --file) como root:

sudo hostname -F /etc/hostname

El manejo del nombre de host (5)/etc/hostname y dicho programa ha sido el mismo en Debian y sus derivados durante más de veinte años, y el paquete que lo ha provisto ha sido etiquetado como esencial y requerido , y IIRC, los scripts de inicio han usado literalmente lo mismo para décadas ( /etc/init/hostname.conftodavía lo contiene), así que tengo que decir que estoy realmente perplejo de cómo ya nadie había mencionado esto :)

Josip Rodin
fuente
Advertencia: no funcionará con Ubuntu 18+, que ejecuta cloud-init de forma predeterminada, que controla el nombre de host en el arranque.
nslntmnx
@nslntmnx erm, ¿qué? ¿Qué nueva dependencia introdujo Ubuntu 18 para extraer cloud-init por defecto? Quizás esté pensando en algunas imágenes adaptadas a la nube, en cuyo caso no debería sorprenderle que ejecuten herramientas de aprovisionamiento de nube personalizadas.
Josip Rodin
3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

Eso debería hacer el trabajo, creo

OmarQunsul
fuente
55
No creo que esto sobrevivirá a un reinicio
Collin Anderson
Advertencia: no funcionará con Ubuntu 18+, que ejecuta cloud-init de forma predeterminada, que controla el nombre de host en el arranque.
nslntmnx
3

He leído las respuestas, pero creo que probablemente estés buscando esto:

Simplemente ejecute estos dos comandos después de editar el /etc/hostnamearchivo.

$ sudo service hostname restart
$ exec bash

Eso es todo. No es necesario reiniciar. También asegúrese de cambiar también el nombre en el /etc/hostsarchivo.

Raman
fuente
A diferencia de muchas otras respuestas, esto no se actualiza /etc/hosts(lo confirmé el 14.04).
IsaacS
Advertencia: no funcionará con Ubuntu 18+, que ejecuta cloud-init de forma predeterminada, que controla el nombre de host en el arranque.
nslntmnx
2

Ubuntu 16.04

Solución basada en la respuesta de la Comunidad DigitalOcean.

Editar archivo de hosts .

$ sudo nano /etc/hosts

Reemplazar oldname con uno nuevo.

127.0.0.1 localhost newname

Configurar nuevo nombre de host.

$ sudo hostnamectl set-hostname newname

Jekis
fuente
Advertencia: no funcionará con Ubuntu 18+, que ejecuta cloud-init de forma predeterminada, que controla el nombre de host en el arranque.
nslntmnx