linux-labs

Вики / Службы и systemd

hostnamectl (имя хоста)

Команда Ubuntu 24.04 · systemd Службыsystemd

Просмотр и смена имени хоста и сведений о машине; /etc/hostname и /etc/hosts.

hostnamectl (systemd) показывает и меняет имя хоста и сведения о машине (ОС, ядро, виртуализация, machine-id, архитектура).

hostnamectl                       # имя, ОС, ядро, виртуализация, machine-id
hostname                          # просто текущее имя (короткая команда)
hostname -f                       # FQDN (полное имя через DNS/hosts)
hostname -I                       # все IP-адреса хоста

systemd различает три имени хоста:

Вид Где Команда
static /etc/hostname, переживает ребут set-hostname web01
transient временное (от DHCP/mDNS), до ребута set-hostname --transient
pretty «красивое» для UI (UTF-8, пробелы) set-hostname "Web 01" --pretty
sudo hostnamectl set-hostname web01            # static (пишет /etc/hostname)
sudo hostnamectl set-hostname "Веб 01" --pretty
hostnamectl --static                            # показать конкретный вид
sudo hostnamectl set-location "Rack 5, DC1"     # доп. метаданные
sudo hostnamectl set-chassis vm                 # тип (vm/server/container)

После смены имени обнови /etc/hosts, чтобы sudo и локальные обращения не тормозили на резолве:

127.0.1.1   web01.example.com web01

sudo долго думает после смены имени

Новое имя не резолвится локально. Добавь его в /etc/hosts (строка 127.0.1.1 имя). Проверка: getent hosts $(hostname) (см. dns-resolv).

Имя «вернулось» после ребута

Его переустанавливает cloud-init или DHCP. Отключи в cloud-init (preserve_hostname: true в /etc/cloud/cloud.cfg) или в источнике DHCP.

hostname -f не даёт FQDN

Нет записи с доменом в /etc/hosts/DNS. Добавь 127.0.1.1 host.domain host — порядок важен (FQDN первым).

machine-id одинаковый на клонах ВМ

При клонировании образа machine-id должен быть уникален (иначе путаются DHCP-лизы, журналы). Сбрось:

sudo truncate -s0 /etc/machine-id && sudo systemd-machine-id-setup
sudo rm -f /var/lib/dbus/machine-id && sudo dbus-uuidgen --ensure
hostnamectl                       # имя + сведения о машине
hostname -f ; hostname -I         # FQDN / все IP
sudo hostnamectl set-hostname web01
# + /etc/hosts: 127.0.1.1 web01.example.com web01
# клон ВМ: truncate -s0 /etc/machine-id && systemd-machine-id-setup

См. также