Como altero o nome do host sem reiniciar?


497

Quero alterar o nome do host do SO, mas não desejo reiniciar.

Eu editei, /etc/hostnamemas requer uma reinicialização para ser implementado. Como evitar isso?


3
Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19

@nslntmnx, obrigado!
MiB

Respostas:


642

É fácil. Basta clicar no ícone de engrenagem (localizado no canto superior direito da tela), abrir a tela "Sobre este computador" (localizada no ícone de engrenagem) e editar "Nome do dispositivo".

Ou, em um terminal, use o seguinte comando:

sudo hostname your-new-name

Isso definirá o nome do host como seu novo nome até você reiniciar. Consulte man hostnamee Como altero o nome do computador? para mais informações. Não use _em seu nome.

Nota

Após a reinicialização, suas alterações /etc/hostnameserão usadas, portanto (como você disse na pergunta), você ainda deve usar

sudo -H gedit /etc/hostname

(ou algum outro editor) para que o arquivo contenha o nome do host.

Para testar se o arquivo está configurado corretamente, execute:

sudo service hostname start

Você também deve editar /etc/hostse alterar a linha que diz:

127.0.1.1     your-old-hostname

para que agora ele contenha seu novo nome de host. (Isso é necessário, caso contrário, muitos comandos deixarão de funcionar.)


4
Eu não quero reiniciar
Deepak Rajput

23
Eu sei. é por isso que você deve usar o comando 'hostname'. Eu só queria esclarecer que o comando 'hostname' muda apenas o nome do host até você reiniciar / travar / etc. Depois, ele lerá o nome do arquivo novamente.
jasperado

5
Depende. Se você digitou o comando, não precisa reiniciar. O nome do host já foi alterado. Mas apenas até a sua próxima reinicialização.
jasperado

19
Note que você também tem que mudar a /etc/hosts(ver outras respostas)
JB.

9
Em suma, embora hostnamefaça com que o novo nome entre em vigor imediatamente, ele não é "permanente", a menos que você também mude /etc/hostnamee /etc/hosts, como esses são os arquivos que serão lidos após uma reinicialização ou uma falha, o que, é claro, você pode não ser esperando com antecedência.
precisa

280

Ubuntu 13.04 em diante

O hostnamectlcomando faz parte da instalação padrão nas edições Desktop e Server.

Combina a configuração do nome do host por meio do hostnamecomando e edição /etc/hostname. Além de definir o nome do host estático, ele pode definir o nome do host "bonito", que não é usado no Ubuntu. Infelizmente, a edição /etc/hostsainda precisa ser feita separadamente.

hostnamectl set-hostname new-hostname

Este comando faz parte do systemd-servicespacote (que, a partir do Ubuntu 14.04, também inclui os comandos timedatectle localectl). À medida que o Ubuntu migra systemd, essa ferramenta é o futuro.


1
Observe que isso não está disponível em todos os lugares. Acabei de olhar na minha instalação do Ubuntu 14.04 LTS ARM-7 e hostnamectlnão existe. Acho que alguns sabores do Ubuntu ainda não estão usando o systemd.
Stéphane

1
@ Stéphane os comandos fazem parte da suíte systemd, mas estão disponíveis independentemente. Nesse caso, 13.04-14.10 não usa systemd como init, pelo comando está disponível.
muru 6/07/2015

1
@ H2ONaCl a variável shell está definida na inicialização, basta abrir outro shell e a variável hostname deve estar correta. Quanto ao sudo, o erro sobre a resolução do nome do host nunca me impediu de fazer nada.
muru

1
@ H2ONaCl ah, mas a variável HOSTNAME não é padrão - o traço IIRC e o ksh não o possuem, o zsh usa o HOST, então, no que diz respeito às variáveis ​​do shell, é o fundo da pilha.
muru 31/01

3
Ainda funciona no Ubuntu 18.04 LTS.
LucaM 15/06

63

Sem reiniciar

Alterando o nome do host ou o nome do computador no ubuntu sem reiniciar

Edite / etc / hostname e mude para o novo valor,

nano /etc/hostname 

Edite / etc / hosts e altere a linha 127.0.1.1 antiga para seu novo nome de host

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

Nota : eu li em um fórum> Editar / etc / hosts e alterei a antiga linha 127.0.1.1 para o seu novo nome de host (se você não fizer isso, não poderá mais usar o sudo. Se você já o fez , pressione ESC no menu grub, escolha recuperação e edite seu arquivo host para as configurações corretas)

Agora, após uma reinicialização, seu nome de host será o novo que você escolheu

Sem reinicialização

Para alterar sem uma reinicialização , você pode apenas usar hostname.sh depois de editar / etc / hostname. Você deve manter os dois nomes de host em / etc / hosts (127.0.0.1 newhost oldhost) até executar o comando abaixo:

sudo service hostname start

Nota : Comando acima para ativar a alteração. O nome do host salvo neste arquivo (/ etc / hostname) será preservado na reinicialização do sistema (e será definido usando o mesmo serviço).


No Ubuntu 12.10, a última parte não funciona com a seguinte mensagem de erro sudo: unable to resolve host old-hostname. Para essa parte, a solução @jesperado funciona bem.
Frédéric Grosshans

3
Se você não atualizar /etc/hosts, as coisas do mant começam a falhar no 12.04.2 LTS, incluindo o wcomando, Apache /sbin/reboote muito mais. Certifique-se de atualizar/etc/hosts
Josh

Você se referir tanto 127.0.0.1para localhoste 127.0.1.1para um nome de host personalizado. Direito? Então, no final da sua resposta, para uma ação sem rebot , você faz referência /etc/hostse 127.0.0.1 newhost oldhost. Então, não há necessidade de um 127.0.1.1endereço?
Nikos Alexandris

1
não funcionou para mim. eu tive que usar sudo nano /etc/hostspara que a mudança tivesse efeito; sem sudo, apenas nano /etc/hostsnão salvar a alteração
conman253

2
Qual é a diferença entre reiniciar e reiniciar?
tempestade

43

O nome padrão foi definido quando você estava instalando o Ubuntu. Você pode alterá-lo facilmente para o que quiser no Desktop e no servidor editando os arquivos de hosts e nomes de host. Abaixo está como:

  1. Pressione CtrlAlttno teclado para abrir o terminal. Quando abrir, execute o comando abaixo:sudo hostname NEW_NAME_HERE

Isso mudará o nome do host até a próxima reinicialização. A alteração não será visível imediatamente no seu terminal atual. Inicie um novo terminal para ver o novo nome do host.

  1. Para alterar o nome permanentemente, execute o comando para editar os arquivos do host:

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

Para o servidor Ubuntu sem uma GUI, execute sudo vi /etc/hostnamee sudo vi /etc/hostse editá-los um por um. Nos dois arquivos, altere o nome para o que você deseja e salve-o.

Por fim, reinicie o computador para aplicar as alterações.


16

Aqui está um script que altera o nome do host da maneira prescrita. Ele garante que não apenas sudomas também os aplicativos X11 continuem funcionando sem a necessidade de reinicialização.

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}')"

O que a última linha do script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"faz? Apenas curioso.
Fr0zenFyr

4
@ Fr0zenFyr: pega um token de autenticação X11 válido ( xauth list) e substitui o nome do host antigo pelo novo nome do host ( sed). Em seguida, awkcoloca aspas no primeiro argumento xauth addporque xautho formato de entrada e saída não é simétrico.
Lucas

Obrigada pelo esclarecimento. Eu sempre reiniciei para que as alterações entrassem em vigor. +1
Fr0zenFyr

@trakz: Na verdade, 127.abc, qualquer que seja o número, é todo localhost conforme a IETF RFC. (a maioria das pessoas simplesmente não sabem disso, mas como a maioria não, editar aprovado)
Fabby

14

Sem reiniciar:

  1. alterar o nome do host em /etc/hostname
  2. atualizar de /etc/hostsacordo
  3. sudo sysctl kernel.hostname=mynew.local.host

Verifique seu nome de host atual com hostname -f


Com 16.04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Talvez porque seja um CT dentro do Proxmox.
Pablo A

14

Persistência de nome de host na nuvem-init (Ubuntu 18+)

Embora as abordagens acima ( hostnamectl, etc/hostnameetc) funcionem para a mudança imediata do nome do host, com o advento do cloud-init - que pode controlar a configuração do nome do host - entre muitas outras coisas. Portanto, não permanecerá após uma reinicialização se o cloud-init estiver instalado. Se você deseja que a alteração permaneça após uma reinicialização, será necessário editar os arquivos de configuração do cloud-init , desabilite o módulo set / update do nome do host do cloud-init :

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

ou desative inteiramente o cloud-init:

sudo touch /etc/cloud/cloud-init.disabled

1
Voto por favor esta resposta. Isso funcionou muito bem para mim. Outras respostas não funcionam com a adoção do cloud-init.
Nslntmnx 01/09/19

@nslntmnx ele vem instalado por padrão na área de trabalho 18.04, apenas servidor? A área de trabalho não possui /etc/cloud/cloud.cfg. Qual é o nome do pacote? Apenas cloud-init?
Ciro Santilli escreveu:

1
Além disso, existe alguma maneira de alterar o nome do host com o cloud-init em vez de apenas desativar sua substituição?
Ciro Santilli escreveu:

1
Sim, você pode alterar muitas configurações usando o cloud-init - veja o link da documentação na minha resposta - aqui está um link para definir o nome do host: cloudinit.readthedocs.io/en/latest/topics/…
Pierz

7

Para obter seu nome de host atual:

cat /etc/hostname

Isso pode ser alterado em qualquer editor de texto. Você também precisaria atualizar a entrada diferente de localhost contra 127.0.0.1 em / etc / hosts.


1
Ou simplesmente execute o comando "hostname" na linha de comando.
Elomage # 1/15

4
  1. Substitua o conteúdo /etc/hostnamepelo nome do host desejado (você pode editar com sudo nano /etc/hostname)
  2. Em /etc/hosts, substitua a entrada ao lado de 127.0. 1 .1 com o nome do host desejado (você pode editar com sudo nano /etc/hosts)
  3. Executar sudo service hostname restart; sudo service networking restart

Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19

@nslntmnx você tem certeza disso? Eu vejo no 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 atualmente não tenho o Ubuntu 18, então não posso testá-lo até o fim de semana.
George

4

Ubuntu 16.04

Isso é sem reinicialização e sem qualquer uso do terminal.

  • Vá para Configurações do sistema -> Detalhes .
  • Aí está. Ao lado do nome do dispositivo , há uma caixa de texto.
  • Edite a caixa de texto e feche a janela.

Terminal aberto. Veja por si mesmos.

(Para versões mais antigas, a caixa de texto não é editável.)


4

A resposta clássica à pergunta do pôster original é que, uma vez editado /etc/hostname, você o aplica sem reiniciar executando hostname (1) com a opção -F( --file) como root:

sudo hostname -F /etc/hostname

O nome do host (5) que lida com /etc/hostnamee o programa mencionado é o mesmo no Debian e seus derivados há mais de vinte anos, e o pacote que o fornece foi marcado como essencial e necessário , e no IIRC os scripts init literalmente usaram a mesma coisa para décadas ( /etc/init/hostname.confainda o contém), então devo dizer que estou realmente intrigado com o fato de ninguém ter mencionado isso já :)


Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19

@nslntmnx erm, o que? Que nova dependência o Ubuntu 18 introduziu para puxar o cloud-init por padrão? Você pode estar pensando em algumas imagens personalizadas para a nuvem; nesse caso, não deve ser surpresa que elas executem ferramentas personalizadas de provisionamento em nuvem.
Josip Rodin

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

Isso deve fazer o trabalho que eu acho


5
Eu não acho que isso vai sobreviver um reinício
Collin Anderson

Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19

3

Eu li as respostas, mas acho que provavelmente você está procurando por isso:

Basta executar esses dois comandos após editar o /etc/hostnamearquivo.

$ sudo service hostname restart
$ exec bash

Isso é tudo. Não há necessidade de reiniciar. Também certifique-se de alterar o nome no /etc/hostsarquivo.


Ao contrário de muitas outras respostas, isso não é atualizado /etc/hosts(confirmei em 14.04).
IsaacS

Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19

2

Ubuntu 16.04

Solução baseada em resposta da Comunidade DigitalOcean.

Edite o arquivo hosts .

$ sudo nano /etc/hosts

Substitua oldname por um novo.

127.0.0.1 localhost newname

Configure o novo nome do host.

$ sudo hostnamectl set-hostname newname


Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.