Questão Como faço para alterar o nome do host sem reiniciar?


Eu quero mudar o nome do host do sistema operacional, mas eu não quero reiniciar.

Eu editei /etc/hostname mas requer um reinício para ser implementado. Como evitar isso?


456
2017-12-14 08:56


origem


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


Respostas:


É 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 irá definir o nome do host para o seu novo nome até que você reinicie. Vejo man hostname e Como eu mudo o nome do computador? para mais informações. Não use _ em seu nome.

Nota

Depois de reiniciar, suas alterações /etc/hostname será usado, então (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/hosts e mude a linha que diz:

127.0.1.1     your-old-hostname

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


593
2017-12-14 10:27



Eu não quero reiniciar - Deepak Rajput
Eu sei. é por isso que você deve usar o comando 'hostname'. Eu só queria esclarecer, que o comando 'hostname' só altera o nome do host até que você reinicie o / crash / etc. Depois disso, ele irá ler o nome do arquivo novamente. - jasperado
Depende Se você digitou o comando, não precisa reiniciar. O nome do host já foi alterado. Mas apenas até o próximo reinício. - jasperado
Note que você também tem que mudar o /etc/hosts (veja outras respostas) - JB.
Em suma, embora hostname fará com que o novo nome tenha efeito imediato, não é "permanente" a menos que você também mude /etc/hostname e /etc/hosts, uma vez que esses são os arquivos que serão lidos após um reinício ou uma falha, o que, obviamente, você pode não estar esperando antecipadamente. - Tim Parenti


Ubuntu 13.04 em diante

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

Combina a configuração do nome do host através do hostname comando e edição /etc/hostname. Além de definir o nome de host estático, ele pode definir o nome do host "bonito", que não é usado no Ubuntu. Infelizmente, editando /etc/hosts ainda tem que ser feito separadamente.

hostnamectl set-hostname new-hostname

Este comando faz parte do systemd-services pacote (que, como no Ubuntu 14.04, também inclui o timedatectl e localectl comandos). Como o Ubuntu migra para systemdesta ferramenta é o futuro.


250
2017-08-27 21:03



Observe que isso não está disponível em todos os lugares. Apenas olhei na minha instalação do Ubuntu 14.04 LTS ARM-7, e hostnamectl não existe. Acho que alguns sabores do Ubuntu ainda não estão usando o systemd. - Stéphane
@ Stéphane os comandos fazem parte da suite systemd, mas eles estão disponíveis de forma independente. Neste caso, 13.04-14.10 não use systemd como init, pelo comando está disponível. - muru
@ H2ONaCl a variável shell é definida na inicialização, basta abrir outro shell e a variável hostname deve estar bem. Quanto ao sudo, o erro sobre a resolução do nome do host nunca me impediu de fazer nada. - muru
@ H2ONaCl ah, mas a variável HOSTNAME não é padrão - IIRC traço e ksh não tem, zsh usa HOST, então, na medida em que as variáveis ​​shell vão, é a parte inferior do heap. - muru
Ainda funciona no Ubuntu 18.04 LTS. - donlucacorleone


Sem reinício

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

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

nano /etc/hostname 

Edite / etc / hosts e mude 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 mude a linha 127.0.1.1 antiga para o seu novo nome de host (se você não fizer isso, você não será capaz de usar o sudo mais. Se você já fez isso, pressione ESC no menu grub, escolha recuperação e edite seu arquivo host para as configurações corretas)

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

Sem reinicializar

Mudar sem um reboot, você pode apenas usar hostname.sh depois de editar / etc / hostname. Você deve manter ambos os nomes de host em / etc / hosts (127.0.0.1 newhost oldhost) até executar o comando abaixo:

sudo service hostname start

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


58
2018-02-13 20:16



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
Se você não atualizar /etc/hostsmant as coisas começam a falhar em 12.04.2 LTS, incluindo o w comando, Apache, /sbin/reboot e muito mais. Certifique-se de atualizar /etc/hosts - Josh
Você se refere a ambos 127.0.0.1 para localhost e 127.0.1.1 para um nome de host personalizado. Certo? Então, no final de sua resposta, por uma ação sem um rebotevocê faz referência /etc/hosts e 127.0.0.1 newhost oldhost. Então, não há necessidade de um 127.0.1.1 endereço? - Nikos Alexandris
não funcionou para mim. eu tive que usar sudo nano /etc/hosts para que a mudança tenha efeito; sem sudo, só nano /etc/hosts não salvou a mudança - conman253
Qual é a diferença entre reiniciar e reiniciar? - storm


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

  1. pressione CtrlAltt no teclado para abrir o terminal. Quando se abre, 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/hostname e sudo vi /etc/hosts e edite-os um por um. Nos dois arquivos, altere o nome para o que você deseja e salve-os.

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


42
2017-11-01 22:47





Aqui está um script que altera o nome do host da maneira prescrita. Garante que não só sudo mas também os aplicativos X11 continuam funcionando sem 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}')"

16
2018-03-07 06:30



O que a última linha no script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')" Faz? Apenas curioso - Fr0zenFyr
@ Fr0zenFyr: leva um token de autenticação X11 válido (xauth list) e substitui o hostname antigo pelo novo hostname (sed). Então awk coloca aspas em torno do primeiro argumento para xauth add Porque 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.a.b.c seja qual for o número, é tudo localhost como IETF RFC. (a maioria das pessoas simplesmente não sabe disso, mas como a maioria não, edite aprovado) - Fabby


Sem reiniciar:

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

Verifique seu nome de host atual com hostname -f


12
2018-03-31 14:46



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


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.


7
2017-09-14 01:12



Ou apenas execute o comando "hostname" na linha de comando. - elomage