Domanda Come cambio il nome host senza un riavvio?


Voglio cambiare il nome host del sistema operativo ma non voglio riavviare.

Ho modificato /etc/hostname ma richiede un riavvio per essere implementato. Come evitare questo?


455
2017-12-14 08:56


origine


Attenzione: non funzionerà con Ubuntu 18+ che sta eseguendo cloud-init per impostazione predefinita, che controlla l'hostname all'avvio. - nslntmnx


risposte:


È facile. Basta fare clic sull'icona a forma di ingranaggio (situata nell'angolo in alto a destra dello schermo), aprire la schermata "Informazioni su questo computer" (situata sull'icona di Gear) e modificare "Nome dispositivo".

Oppure, in un terminale, utilizzare il seguente comando:

sudo hostname your-new-name

Questo imposterà il nome host al tuo nuovo nome fino al tuo riavvio. Vedere man hostname e Come cambio il nome del computer? per maggiori informazioni. Non usare _ nel tuo nome

Nota

Dopo un riavvio, le modifiche verranno apportate /etc/hostname sarà usato, quindi (come hai detto nella domanda), dovresti ancora usare

sudo -H gedit /etc/hostname

(o qualche altro editor) in modo che il file contenga il nome host.

Per verificare che il file sia impostato correttamente, esegui:

sudo service hostname start

Dovresti anche modificare /etc/hosts e cambia la linea che legge:

127.0.1.1     your-old-hostname

in modo che ora contenga il tuo nuovo nome host. (Questo è richiesto altrimenti molti comandi cesseranno di funzionare).


593
2017-12-14 10:27



non voglio ricominciare - Deepak Rajput
Lo so. è per questo che dovresti usare il comando 'hostname'. Volevo solo chiarire che il comando 'hostname' cambia solo il nome host fino al riavvio / crash / etc. Successivamente leggerà nuovamente il nome dal file. - jasperado
Dipende. Se hai inserito il comando non è necessario riavviare. Il nome host è già cambiato. Ma solo fino al prossimo riavvio. - jasperado
Nota che devi anche cambiare il /etc/hosts (vedi altre risposte) - JB.
In breve, anche se hostname farà sì che il nuovo nome abbia effetto immediato, non è "permanente" a meno che non cambi anche tu /etc/hostname e /etc/hosts, dal momento che quelli sono i file che verranno letti dopo un riavvio o un arresto anomalo, che, naturalmente, potresti non aspettarti prima del tempo. - Tim Parenti


Ubuntu 13.04 in poi

Il hostnamectl comando fa parte dell'installazione predefinita su entrambe le edizioni desktop e server.

Combina l'impostazione dell'hostname tramite il hostname comando e modifica /etc/hostname. Oltre a impostare il nome host statico, è possibile impostare il nome host "carino", che non è utilizzato in Ubuntu. Purtroppo, la modifica /etc/hosts deve ancora essere fatto separatamente.

hostnamectl set-hostname new-hostname

Questo comando fa parte del systemd-services pacchetto (che, come da Ubuntu 14.04, include anche il timedatectl e localectl comandi). Mentre Ubuntu esegue la migrazione systemd, questo strumento è il futuro.


250
2017-08-27 21:03



Nota questo non è disponibile ovunque. Ho appena visto la mia installazione di Ubuntu 14.04 LTS ARM-7, e hostnamectl non esiste Indovina che alcuni sapori di Ubuntu non stanno ancora usando systemd. - Stéphane
@ Stéphane i comandi fanno parte della suite systemd, ma sono disponibili indipendentemente. In questo caso, 13.04-14.10 non usare systemd come init, dal comando è disponibile. - muru
@ H2ONaCl la variabile di shell è impostata all'avvio, basta aprire un'altra shell e la variabile hostname dovrebbe andare bene. Per quanto riguarda sudo, l'errore sulla risoluzione del nome host non mi ha mai impedito di fare nulla. - muru
@ H2ONaCl ah, ma il variabile HOSTNAME non è standard - Il cruscotto IIRC e ksh non ce l'hanno, zsh usa HOST, quindi per quanto riguarda le variabili di shell, è il fondo dell'heap. - muru
Funziona ancora con Ubuntu 18.04 LTS. - donlucacorleone


Senza riavvio

Modifica del nome host o del computer in ubuntu senza riavviare

Modifica / etc / hostname e passa al nuovo valore,

nano /etc/hostname 

Modifica / etc / hosts e cambia la vecchia linea 127.0.1.1 con il tuo nuovo nome host

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

Nota : l'ho letto su un forum> Modifica / etc / hosts e cambio la vecchia linea 127.0.1.1 al tuo nuovo hostname (se non lo fai, non sarai più in grado di usare sudo.) Se l'hai già fatto, premi ESC nel menu di grub, scegli ripristino e modifica il file host con le impostazioni corrette)

Ora dopo un riavvio, il tuo nome host sarà il nuovo che hai scelto

Senza riavviare

Cambiare senza un riavvio, puoi semplicemente usare hostname.sh dopo aver modificato / etc / hostname. È necessario mantenere entrambi i nomi host in / etc / hosts (127.0.0.1 newhost oldhost) fino a quando non si esegue il comando seguente:

sudo service hostname start

Nota : Sopra il comando per rendere attiva la modifica. Il nome host salvato in questo file (/ etc / hostname) verrà conservato al riavvio del sistema (e verrà impostato utilizzando lo stesso servizio).


58
2018-02-13 20:16



Su Ubuntu 12.10, l'ultima parte non funziona con il seguente messaggio di errore sudo: unable to resolve host old-hostname. Per quella parte, la soluzione @jesperado funziona bene. - Frédéric Grosshans
Se non si aggiorna /etc/hosts, le cose cominciano a fallire su 12.04.2 LTS, incluso il w comando, Apache, /sbin/reboot e altro ancora. Assicurati di aggiornare /etc/hosts - Josh
Ti riferisci ad entrambi 127.0.0.1 per localhost e 127.0.1.1 per un nome host personalizzato. Destra? Poi, verso la fine della tua risposta, per un'azione senza un rebot, fai riferimento /etc/hosts e 127.0.0.1 newhost oldhost. Quindi, non c'è bisogno di a 127.0.1.1 indirizzo? - Nikos Alexandris
non ha funzionato per me dovevo usare sudo nano /etc/hosts affinchè la modifica abbia effetto; senza sudo, solo nano /etc/hosts non ha salvato la modifica - conman253
Qual è la differenza tra riavvio e riavvio? - storm


Il nome predefinito è stato impostato durante l'installazione di Ubuntu. Puoi facilmente cambiarlo in qualsiasi desktop e server modificando i file host e hostname. Di seguito è come:

  1. stampa Ctrlaltt sulla tastiera per aprire il terminale. Quando si apre, esegui il comando seguente: sudo hostname NEW_NAME_HERE

Questo cambierà il nome host fino al successivo riavvio. La modifica non sarà visibile immediatamente nel tuo terminale corrente. Avvia un nuovo terminale per vedere il nuovo nome host.

  1. Per cambiare il nome in modo permanente, esegui il comando per modificare i file host:

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

Esegui per il server Ubuntu senza GUI sudo vi /etc/hostname e sudo vi /etc/hosts e modificali uno per uno. In entrambi i file, cambia il nome in quello che vuoi e salvalo.

Infine, riavvia il computer per applicare le modifiche.


42
2017-11-01 22:47





Ecco uno script che modifica il nome host nel modo prescritto. Assicura che non solo sudo ma anche le applicazioni X11 continuano a funzionare senza richiedere il riavvio.

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



Cosa fa l'ultima riga in script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')" fare? Solo curioso. - Fr0zenFyr
@ Fr0zenFyr: accetta un token di autenticazione X11 valido (xauth list) e sostituisce il vecchio nome host con il nuovo nome host (sed). Poi awk mette le virgolette attorno al primo argomento a xauth add perché xauthIl formato di input e output non è simmetrico. - Lucas
Grazie per la spiegazione. Mi sono sempre riavviato perché le modifiche abbiano effetto. +1 - Fr0zenFyr
@trakz: In realtà 127.a.b.c qualunque sia il numero, è tutto localhost secondo IETF RFC. (la maggior parte delle persone semplicemente non lo sa, ma come la maggior parte non lo fa, modifica approvata) - Fabby


Senza riavvio:

  1. cambia nome host in /etc/hostname
  2. aggiornare /etc/hosts di conseguenza
  3. sudo sysctl kernel.hostname=mynew.local.host

Controlla il tuo attuale hostname con hostname -f


12
2018-03-31 14:46



Con 16.04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Forse perché è un CT all'interno di Proxmox. - Pablo Bianchi


Per ottenere il nome host corrente:

cat /etc/hostname

Questo può essere cambiato in qualsiasi editor di testo. Dovresti anche aggiornare una voce diversa da localhost rispetto a 127.0.0.1 in / etc / hosts.


7
2017-09-14 01:12



O semplicemente esegui il comando "hostname" dalla riga di comando. - elomage


  1. Sostituisci il contenuto di /etc/hostname con il nome host desiderato (puoi modificare con sudo nano /etc/hostname)
  2. In /etc/hosts, sostituire la voce accanto a 127.0.1.1 con il nome host desiderato (puoi modificare con sudo nano /etc/hosts)
  3. Eseguire sudo service hostname restart; sudo service networking restart

4
2018-05-08 18:26



Attenzione: non funzionerà con Ubuntu 18+ che sta eseguendo cloud-init per impostazione predefinita, che controlla l'hostname all'avvio. - nslntmnx
@nslntmnx sei sicuro di questo? Vedo nel 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. Al momento non ho Ubuntu 18, quindi non posso testarlo fino al weekend. - George


Ubuntu 16.04

Questo è senza ricomincia e senza alcun uso da terminale.

  • Vai a Impostazioni di sistema -> Dettagli.
  • Eccolo. Accanto Nome del dispositivo, c'è una casella di testo.
  • Modifica la casella di testo e chiudi la finestra.

Terminale aperto. Vedi per voi.

(Per le versioni precedenti, la casella di testo non è modificabile.)


4
2018-03-13 18:26





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

Questo dovrebbe fare il lavoro che penso


3
2017-12-20 12:43



Non penso che sopravviverà a una ripresa - Collin Anderson
Attenzione: non funzionerà con Ubuntu 18+ che sta eseguendo cloud-init per impostazione predefinita, che controlla l'hostname all'avvio. - nslntmnx


Ho letto le risposte, ma penso che probabilmente stai cercando questo:

Basta eseguire questi due comandi dopo aver modificato il file /etc/hostname file.

$ sudo service hostname restart
$ exec bash

È tutto. Non è necessario riavviare. Assicurati anche di cambiare il nome in /etc/hosts file.


3
2017-09-28 18:55



A differenza di molte altre risposte, questo non si aggiorna /etc/hosts (Ho confermato il 14.04). - IsaacS
Attenzione: non funzionerà con Ubuntu 18+ che sta eseguendo cloud-init per impostazione predefinita, che controlla l'hostname all'avvio. - nslntmnx