Администрирование Linux-серверов

Имя хоста, версия ОС и корректная перезагрузка Linux-сервера

Как определить дистрибутив, ядро и параметры Linux-сервера, изменить hostname и безопасно перезагрузить или выключить систему.

10 минут
абстрактная иллюстрация: управление состоянием Linux-сервера
Название дистрибутива Linux, его выпуск, версия запущенного ядра Linux, архитектура и имя хоста — разные свойства системы; для них нужны разные источники. В системах с systemd постоянное имя обычно задают через hostnamectl, а перезагрузку и выключение выполняют через systemctl. Перед командой на удалённом сервере нужно проверить активные работы и путь восстановления доступа, а после старта — убедиться, что система действительно загрузилась и нужные службы работают.

Определите ОС, ядро, архитектуру и имя хоста

Не пытайтесь получить всю информацию одной командой. /etc/os-release описывает установленную ОС, uname -r — версию ядра, которое запущено сейчас, а hostname — текущее имя узла. Установленный пакет ядра и работающее ядро могут различаться, например если обновление уже установило новое ядро, но сервер ещё не перезагружали.

Показывает идентификационные данные установленной ОС в стандартизованном формате `os-release`: обычно поля `NAME`, `VERSION`, `ID`, `VERSION_ID` и другие. Это рекомендуемый переносимый источник для Debian, Ubuntu и RHEL-подобных систем.
cat /etc/os-release
Показывает версию запущенного ядра, а не список установленных пакетов ядра.
uname -r
Показывает машинную архитектуру запущенной системы, например `x86_64` или `aarch64`.
uname -m
Показывает текущее имя хоста, хранимое ядром. Оно не обязательно является коротким именем или корректно разрешаемым полным доменным именем.
hostname

Если файла нет или данные выглядят необычно

/etc/os-release является документированным форматом, но в минимальных, старых или специализированных системах файл может отсутствовать либо быть неполным. Сначала проверьте документацию используемого выпуска ОС и локальные справочные страницы man os-release, man uname и man hostname. Не определяйте дистрибутив по одному названию пакета или баннеру SSH.

Базовая информация о системе Linux

Следующие команды дают первичный снимок CPU, памяти, Swap и времени работы. Они не заменяют диагностику нагрузки, дефицита памяти или проблем процессов: для этого нужны отдельные проверки.

Состав полей и доступные параметры `hostnamectl`, `uname`, `lscpu`, `free`, `swapon` и `uptime` зависят от версии утилит и дистрибутива. Для точной интерпретации используйте локальные страницы `man` и документацию целевого выпуска.

Что посмотретьКомандаЧто означает результат
Процессор и архитектураlscpuАрхитектура, число CPU, модель и топология в пределах сведений, доступных системе.
Оперативная память и swapfree -hОбщий объём, использование RAM и swap. Занятая RAM сама по себе не означает нехватку памяти: часть может занимать кэш страниц.
Активный swapswapon --showПодключённые области или файлы swap, если утилита доступна.
Время работы и средняя нагрузкаuptimeВремя после загрузки, число пользователей и load average.
Сводка systemdhostnamectl statusИмя хоста, ОС, ядро и архитектуру, если в системе есть systemd и hostnamectl.
Показывает память и swap в удобных единицах. Для анализа нехватки RAM, работы swap и событий OOM перейдите к статье [«Не хватает памяти в Linux: RAM, swap, OOM Killer и подкачка»](/baza-znaniy/resheniya/diagnostika-pamyati-swap-linux).
free -h
Показывает время непрерывной работы и среднюю нагрузку. Высокая нагрузка требует отдельной диагностики: [«Процессы, CPU и нагрузка Linux: диагностика высокой загрузки»](/baza-znaniy/resheniya/diagnostika-processov-cpu-linux).
uptime

Как сменить hostname Linux

Сначала установите, какая система инициализации запущена. Наличие Linux не означает наличие systemd или hostnamectl. В systemd имя ведёт служба systemd-hostnamed, а в других системах постоянную настройку выполняют только средствами, документированными для конкретного дистрибутива и его выпуска.

Показывает имя процесса с PID 1. Если вывод — `systemd`, можно проверить доступность `hostnamectl`.
ps -p 1 -o comm=
В systemd показывает известные представления имени хоста и сведения о системе. Если команда отсутствует или не работает, не заменяйте её случайным редактированием файлов: обратитесь к документации своей ОС.
hostnamectl status

Static, transient и pretty hostname в systemd

По документации systemd, systemd-hostnamed различает три представления имени. Static hostname — постоянное имя, обычно хранимое локально и сохраняемое после перезагрузки. Transient hostname — текущее динамическое имя, хранимое в ядре; его могут изменять во время работы средства сетевой конфигурации, а при отсутствии отдельного transient hostname система может использовать static hostname. Pretty hostname — свободно оформленное имя для отображения, которое может содержать пробелы и символы, недопустимые для сетевого имени.

Изменение имени в системе с systemd

Команды требуют административных прав. Доступность ключей и детали поведения зависят от версии systemd и дистрибутива; перед применением на рабочем сервере сверяйтесь с man hostnamectl и документацией целевой ОС.

  1. 1
    Выберите корректное постоянное имя
    Подготовьте имя, допустимое в вашей DNS- и сетевой схеме, например app01. Не включайте в техническое hostname пробелы и произвольные символы; для отображаемого названия предназначен pretty hostname.
  2. 2
    Задайте постоянное имя
    Выполните sudo hostnamectl set-hostname app01 --static. Параметр --static изменяет только постоянное представление имени. Проверьте его через hostnamectl status; команда hostname отдельно показывает текущее имя ядра, которое не обязано сразу совпасть со static hostname. Постоянное имя используется после следующих загрузок, если его не переопределяет другая конфигурация.
  3. 3
    При необходимости задайте временное имя
    Для transient hostname используйте sudo hostnamectl set-hostname app01 --transient. Это не заменяет настройку постоянного имени и может быть перезаписано сетевой конфигурацией или при следующей загрузке.
  4. 4
    При необходимости задайте отображаемое имя
    Например, sudo hostnamectl set-hostname "Сервер приложения 01" --pretty. Проверяйте его через hostnamectl status; это имя не следует считать DNS-именем.
  5. 5
    Проверьте, какие представления изменились
    Вызов hostnamectl set-hostname НОВОЕ_ИМЯ без --static, --transient и --pretty по документации systemd изменяет все три представления. Если указан хотя бы один из этих параметров, изменяются только выбранные представления. Если pretty hostname задают одновременно со static или transient, исходная строка сохраняется как pretty hostname, а для выбранных технических представлений systemd использует её упрощённый вариант с допустимыми для них символами.

Hostname — не настройка DNS и сети

Смена hostname не меняет IP-адрес, не создаёт и не обновляет запись в авторитетной DNS-зоне, не настраивает NSS, маршруты или TLS-сертификаты. Полное доменное имя может остаться прежним или не разрешаться вовсе: результат зависит от DNS, /etc/hosts, /etc/nsswitch.conf, DNS-резолвера и сетевой конфигурации. Проверку и настройку разрешения имён выполняйте отдельно — см. «Настройка DNS-резолвера в Linux: resolv.conf и systemd-resolved».

В системе без systemd не предполагайте, что достаточно изменить /etc/hostname: путь, формат и механизм применения зависят от дистрибутива, его релиза и init-системы. Используйте официальное руководство целевой ОС. Временно изменить имя в текущей работающей системе иногда позволяет команда sudo hostname НОВОЕ_ИМЯ, но её доступность и взаимодействие с сетевыми менеджерами также нужно проверить в документации; это не универсальный способ постоянной настройки.

Что проверить перед перезагрузкой удалённого сервера

Успешное завершение команды перезагрузки не доказывает, что сервер снова станет доступен. Особенно это важно при работе через SSH: соединение оборвётся штатно, но ошибки загрузки, сети или службы удалённого доступа могут оставить узел недоступным.

  • Подтвердите, что выбрали нужный сервер: сверяйте hostname, IP-адрес, роль узла и окружение, а не только вкладку терминала.
  • Согласуйте окно работ и предупредите пользователей либо владельцев зависимых систем о возможном перерыве.
  • Проверьте, что не идут критичные операции: резервное копирование, миграция, пакетная транзакция, работа с базой данных, запись на хранилище или иная задача, которую нельзя безопасно прервать.
  • Убедитесь, что доступна консоль управления, виртуальная консоль, физический доступ или другой согласованный путь восстановления, если SSH не вернётся.
  • Зафиксируйте, какие службы и прикладные функции должны работать после запуска. Не ограничивайтесь проверкой самого факта ответа на ping.
  • Если перезагрузка связана с обновлением, используйте отдельный план: «Обновление Linux-сервера: пакеты, ядро, перезагрузка и откат».

Как штатно перезагрузить или выключить Linux-сервер

Используйте интерфейс той init-системы, которая действительно работает на сервере. В systemd основными командами являются systemctl reboot и poweroff. Команды reboot, poweroff и shutdown существуют во многих системах, но их реализация, доступные параметры, взаимодействие с systemd и правила отложенного выполнения зависят от дистрибутива и версии. Не считайте их универсально эквивалентными.

Перезагрузка или выключение в системе с systemd

Выполняйте команды из локальной консоли или удалённой SSH-сессии после проверок. Они требуют прав суперпользователя либо разрешённого sudo.

  1. 1
    Уведомьте пользователей и завершите работы
    Согласуйте простой и дождитесь безопасного завершения критичных операций. При необходимости используйте внутренний регламент уведомлений; сама команда управления питанием не заменяет этот этап.
  2. 2
    Перезагрузите сервер
    Выполните sudo systemctl reboot. В SSH-сессии соединение будет закрыто во время остановки системы.
  3. 3
    Или штатно выключите сервер
    Если нужен именно останов, выполните sudo systemctl poweroff. После выключения для физического сервера может потребоваться действие через контроллер управления или кнопку питания согласно процедуре эксплуатации.
  4. 4
    Используйте отложенное выключение только после проверки документации
    Во многих systemd-дистрибутивах shutdown поддерживает планирование, например sudo shutdown -r +5 "Перезагрузка для обслуживания". Однако синтаксис, уведомления, отмена и доступность отложенного режима нужно сверить по man shutdown и документации конкретного выпуска. Не переносите эту команду между системами без проверки.

Не используйте принудительные варианты как обычный способ

systemctl reboot --force и сходные принудительные варианты по документации systemd обходят часть обычной процедуры завершения работы; повторное применение может приводить к ещё более жёсткому перезапуску. Они предназначены для аварийных случаев и могут оставить незавершёнными запись данных, остановку служб и размонтирование файловых систем. Принудительное отключение питания также остаётся аварийной мерой с риском повреждения данных. При проблеме загрузки используйте согласованный план восстановления и статью «Linux-сервер не загружается: GRUB, initramfs, emergency mode и kernel panic».

Проверки после запуска сервера

После возврата доступа проверьте не только факт загрузки, но и ожидаемое состояние системы. Список нужных служб и прикладных проверок зависит от роли сервера.

В systemd подтверждает текущее имя хоста и выводит сводные сведения. На системе без `hostnamectl` используйте `hostname` и документированные средства дистрибутива.
hostnamectl status
Подтверждает версию фактически загруженного ядра и новый uptime после перезагрузки.
uname -r && uptime
В systemd показывает units в состоянии `failed`. Пустой список не заменяет проверку конкретных критичных служб и приложения.
systemctl --failed
Показывает сообщения текущей загрузки уровня warning и более важных уровней, включая error, critical, alert и emergency, если используется [systemd-journald](/baza-znaniy/glossariy/systemd-journald). Для чтения журнала применяется [journalctl](/baza-znaniy/glossariy/journalctl).
journalctl -b -p warning
Показывает журнал предыдущей загрузки, если он сохранился. Доступность зависит от настройки хранения journald: при непостоянном журнале записи прошлой загрузки могут отсутствовать.
journalctl -b -1
  • Проверьте подключение по ожидаемому адресу и имени, но помните: это разные проверки DNS, сети и SSH.
  • Проверьте состояние конкретных критичных служб через systemctl status ИМЯ.service и доступность прикладной функции. Подробности управления службами — в статье «systemd и systemctl: управление службами и автозагрузкой Linux».
  • Просмотрите релевантные ошибки текущей загрузки. Полный порядок поиска, хранения и ротации журналов описан в статье «Журналы Linux: journalctl, rsyslog и logrotate».
  • Если менялось имя хоста, отдельно подтвердите требуемое разрешение имён и работу зависимых интеграций, сертификатов и мониторинга.

Где сверять синтаксис

Названия команд, набор параметров, поля вывода и пути конфигурации зависят от дистрибутива, его выпуска, init-системы, версий systemd и других утилит. Для спорного случая используйте официальную документацию целевой ОС и локальные руководства: man os-release, man hostnamectl, man systemctl, man reboot, man poweroff, man shutdown, man journalctl, man uname, man lscpu, man free и man uptime.

Термины в статье

Дистрибутив Linux — готовая операционная система на базе ядра Linux, включающая набор программ, репозитории, пакетный менеджер и правила обновления и сопровождения.
Имя хоста — идентификатор узла в сети и операционной системе, используемый для отображения, журналирования и разрешения имени в IP-адрес при наличии DNS или hosts.
Кэш страниц — управляемый ядром Linux кэш в оперативной памяти, хранящий данные файлов и блочных устройств для ускорения повторных чтений и буферизации записей.
Пакетная транзакция — согласованный набор действий по установке, обновлению, удалению и настройке пакетов, формируемый менеджером пакетов в рамках одной команды или задания.
Процесс — экземпляр выполняемой программы в Linux с PID, виртуальным адресным пространством, состоянием и связанными с ним ресурсами.
Системная служба — программный компонент, которым ОС управляет как логической единицей для фонового выполнения задач или предоставления функций программам и пользователям.
Ядро Linux — центральный компонент ОС, управляющий аппаратными ресурсами и предоставляющий системные интерфейсы; оно не включает пользовательские утилиты и менеджер пакетов.
journalctl — консольная утилита чтения и фильтрации журнала systemd, выводящая сообщения по времени, юниту, загрузке системы, приоритету и другим полям.
SSH — криптографический сетевой протокол для удалённого доступа и передачи данных, аутентифицирующий стороны и защищающий сеанс от перехвата.
Swap — область на диске или SSD, используемая ядром Linux для размещения вытесненных страниц памяти, когда RAM требуется более активным данным.
systemctl — командная утилита управления systemd, которая запускает и останавливает юниты, показывает их состояние и настраивает автоматическую активацию.
systemd — система инициализации и менеджер служб Linux, управляющий службами и другими ресурсами как объектами unit, обычно описанными unit-файлами.
systemd-journald — служба systemd для приёма, индексации и хранения структурированных журналов ядра, служб, процессов и системных сообщений.

Вопросы по теме

Все вопросы и ответы

Меняет ли смена hostname DNS-запись сервера?

Нет. Изменение hostname не меняет IP-адрес, не создаёт и не обновляет запись в авторитетной DNS-зоне, а также не настраивает маршруты, NSS или TLS-сертификаты. Разрешение полного имени зависит от DNS, /etc/hosts, /etc/nsswitch.conf, резолвера и сетевой конфигурации, поэтому его нужно проверять отдельно.

Почему `uname -r` отличается от установленной версии ядра?

Это нормально. uname -r показывает версию ядра, которое запущено в данный момент, а не список установленных пакетов ядра. После обновления новое ядро уже может быть установлено, но сервер продолжит работать на прежнем до штатной перезагрузки и загрузки новой версии.

Можно ли менять hostname через `/etc/hostname` без systemd?

Зависит от дистрибутива, его выпуска и init-системы. В системе без systemd нельзя считать редактирование /etc/hostname универсальным способом постоянной настройки: путь, формат файла и механизм применения имени могут отличаться. Используйте официальную документацию целевой ОС, а не случайные инструкции для другого дистрибутива.

Почему `hostname` и static hostname могут не совпадать?

Это возможно в systemd, потому что команды показывают разные представления имени. hostname выводит текущее имя, хранимое ядром, а hostnamectl status показывает static, transient и pretty hostname. Transient-имя может меняться средствами сетевой конфигурации, а static hostname обычно применяется при следующих загрузках.

Достаточно ли ping после перезагрузки сервера?

Нет. Ответ на ping подтверждает только базовую сетевую доступность и не доказывает работу SSH, DNS, прикладных функций и критичных служб. После запуска проверьте подключение по ожидаемому адресу и имени, systemctl --failed, состояние нужных сервисов, новую версию ядра и релевантные сообщения журнала.

Чем опасна принудительная перезагрузка Linux-сервера?

Принудительная перезагрузка опасна потерей незавершённых данных и нарушением штатного завершения работы. Варианты вроде systemctl reboot --force обходят часть обычной процедуры: остановку служб, запись данных и размонтирование файловых систем. Их применяют только в аварийных случаях по согласованному плану восстановления.