Comando hostnamectl in Linux: verificare e cambiare il nome host
hostnamectl mostra il nome host e informazioni su sistema operativo, kernel e architettura nei sistemi con systemd. Permette anche di cambiare il nome con set-hostname, senza aggiornare automaticamente DNS o /etc/hosts.
Il nome statico è configurato dall’amministratore e normalmente conservato in /etc/hostname. Il nome transitorio è un valore di ripiego, per esempio ricevuto dalla configurazione di rete: se esiste un nome statico valido, systemd dà priorità a quello. Il nome pretty è una descrizione leggibile dalle persone, che può contenere spazi e caratteri speciali.
Sintassi di base
hostnamectl [opzioni] [comando] [argomenti]
Le parentesi indicano elementi facoltativi e non vanno digitate. Questi esempi si eseguono in un terminale del sistema da gestire; in SSH riguardano il server remoto. Servono il comando installato e l’accesso al servizio systemd-hostnamed tramite il bus di sistema. Un container minimale o un sistema senza i servizi systemd necessari può non supportarli.
Controlla hostnamectl --version, hostnamectl --help e man hostnamectl localmente. Da systemd 249 è disponibile anche hostnamectl hostname NOME; nel sorgente attuale set-hostname resta un alias storico. Gli esempi mantengono questa forma, da verificare sulla versione installata.
Esempi pratici
Nome attuale e informazioni di sistema
hostnamectl status
Controlla nome statico, sistema operativo, kernel e architettura. I campi dipendono dall’ambiente e dalla versione; nome transitorio e pretty possono non comparire separatamente quando coincidono con quello statico. Non interpretare l’assenza di una riga come prova di un errore.
Leggere solo il nome statico
hostnamectl --static
Senza un comando esplicito, status è implicito; questa opzione seleziona il solo nome statico nell’output testuale. Per controllare gli altri nomi puoi usare separatamente hostnamectl --transient e hostnamectl --pretty.
Cambiare il nome host
Prima di procedere verifica che sia la macchina corretta e annota tutti e tre i nomi con le interrogazioni precedenti, compresi eventuali valori vuoti. Esegui la modifica solo su un sistema che amministri, dopo aver verificato le dipendenze dei servizi. Il nome seguente è dimostrativo: sostituiscilo con quello concordato per la tua macchina.
sudo hostnamectl set-hostname web01.example.test
Senza selettori questo comando cambia i nomi statico, transitorio e pretty, non soltanto quello statico. Per limitare una modifica usa il selettore corrispondente, per esempio sudo hostnamectl --static set-hostname web01.example.test. La modifica richiede autorizzazione; sudo presuppone che l’utente sia abilitato. Non serve per le normali interrogazioni di sola lettura.
Verificare il risultato e la portata della modifica
Una modifica riuscita può non produrre testo: il silenzio da solo non basta. Controlla subito lo stato di uscita con echo $? prima di eseguire altri comandi: zero indica successo, un valore diverso indica errore. Poi interroga nuovamente il nome statico:
hostnamectl --static
Output illustrativo dopo l’impostazione dell’esempio, non risultato misurato in questa guida:
web01.example.test
Verifica anche hostnamectl status e gli altri nomi se li hai modificati. Il nome non crea un record nel Domain Name System (DNS), né aggiorna da solo /etc/hosts, certificati o configurazioni applicative. Un test di risoluzione come getent hosts web01.example.test, se disponibile, interroga le fonti configurate sul sistema: non prova da solo che il DNS pubblico sia aggiornato.
Comandi e opzioni principali
| Comando o opzione | Effetto |
|---|---|
status |
Mostra nome host e informazioni sul sistema; è il comando predefinito. |
--static |
Seleziona il nome statico per l’interrogazione testuale o la modifica. |
--transient |
Seleziona il nome transitorio, usato come ripiego in assenza di un nome statico valido. |
set-hostname nome |
Imposta il nome; senza selettori modifica tutti e tre i tipi. |
--pretty |
Seleziona il nome descrittivo per le persone, distinto dal nome usato in rete. |
Precauzioni e ripristino
Prima di cambiare un server, controlla DNS, certificati, monitoraggio, applicazioni e /etc/hosts. Per i nomi statici e transitori usa etichette DNS valide, in minuscolo, senza spazi, per un massimo complessivo di 64 caratteri. systemd accetta anche un nome completo con punti, come nell’esempio, ma raccomanda normalmente un nome locale composto da una sola etichetta.
Per tornare indietro ripristina ogni tipo modificato con il rispettivo selettore e il valore annotato: sudo hostnamectl --static set-hostname 'VALORE_PRECEDENTE', poi analogamente --transient e --pretty se necessario. Sostituisci il segnaposto, mantenendo le virgolette per un nome pretty con spazi. Un valore prima vuoto richiede una stringa vuota, '', per azzerare quella configurazione. Reimpostare indiscriminatamente un unico vecchio nome non ricrea tre valori originariamente diversi.
Dopo il ripristino ricontrolla i nomi e le dipendenze esterne modificate separatamente. Se una configurazione di rete o di provisioning impone un nome, individua anche quella sorgente: una modifica locale può essere sovrascritta in seguito. Gli errori di collegamento al bus o di autorizzazione vanno risolti verificando ambiente, servizio e permessi, senza considerarli conferme di una modifica riuscita.
In questo ambiente Windows con Git Bash hostnamectl non è disponibile. Sono state controllate la sintassi shell dei comandi e la documentazione ufficiale; non è stato eseguito alcun cambio di nome né verificato il funzionamento di systemd, D-Bus o dell’autorizzazione.
Domande frequenti
Se cambio il nome con hostnamectl, cambia anche il DNS?
No. Il nome locale e i record DNS sono configurazioni distinte. Aggiorna i record necessari con gli strumenti del servizio DNS e verifica separatamente la risoluzione dai sistemi che devono raggiungere il server.
Documentazione ufficiale
Consulta il manuale ufficiale di hostnamectl per comandi e selettori, e la documentazione di hostname per persistenza e priorità dei nomi. L’alias storico è visibile nel sorgente ufficiale di hostnamectl.




