Как проверить, находится ли система в однопользовательском режиме в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить состояние работы системы Linux, в частности, как определить, находится ли система в однопользовательском режиме. Вы изучите традиционные уровни запуска (runlevels) с помощью команд runlevel и who -r, а также рассмотрите целевой режим по умолчанию в современных средах systemd с использованием команды systemctl get-default. Этот практический опыт предоставит вам навыки для понимания и проверки состояния работы системы.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/FileandDirectoryManagementGroup -.-> linux/which("Command Locating") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/UserandGroupManagementGroup -.-> linux/whoami("User Identifying") subgraph Lab Skills linux/help -.-> lab-558810{{"Как проверить, находится ли система в однопользовательском режиме в Linux"}} linux/which -.-> lab-558810{{"Как проверить, находится ли система в однопользовательском режиме в Linux"}} linux/service -.-> lab-558810{{"Как проверить, находится ли система в однопользовательском режиме в Linux"}} linux/whoami -.-> lab-558810{{"Как проверить, находится ли система в однопользовательском режиме в Linux"}} end

Проверка уровня запуска (runlevel) с помощью команды runlevel

На этом этапе мы рассмотрим концепцию уровней запуска (runlevels) в Linux и узнаем, как проверить текущий уровень запуска с использованием команды runlevel.

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

Хотя современные дистрибутивы Linux часто используют цели systemd вместо традиционных уровней запуска, понимание уровней запуска по-прежнему имеет значение, так как вы можете встретить их в более старых системах или документации.

Давайте проверим текущий уровень запуска в вашей среде LabEx. Если вы еще не открыли терминал, откройте его.

Введите следующую команду и нажмите Enter:

runlevel

Вы должны увидеть вывод, похожий на следующий:

N 5

Разберем вывод:

  • Первый символ (N в данном случае) указывает на предыдущий уровень запуска. N означает, что предыдущего уровня запуска не было (система только что запустилась).
  • Второй символ (5 в данном случае) указывает на текущий уровень запуска.

В традиционных системах SysVinit распространенные уровни запуска включают:

  • 0: Остановка (выключение системы)
  • 1: Однопользовательский режим (для технического обслуживания)
  • 2: Многопользовательский режим без сетевого подключения
  • 3: Многопользовательский режим с сетевым подключением (текстовая консоль)
  • 4: Не используется/определяемый пользователем
  • 5: Многопользовательский режим с сетевым подключением и графическим интерфейсом
  • 6: Перезапуск (перезагрузка системы)

Ваша среда LabEx работает на уровне запуска 5, что соответствует многопользовательской системе с графической рабочей средой.

Понимание уровней запуска помогает вам решать проблемы при запуске системы и управлять системными службами.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка уровня запуска (runlevel) с помощью команды who -r

На предыдущем этапе мы использовали команду runlevel для проверки текущего уровня запуска. Другой способ получить похожую информацию - использовать команду who с опцией -r.

Команда who обычно используется для отображения списка пользователей, вошедших в систему. Однако, с опцией -r она отображает текущий уровень запуска.

Давайте попробуем. В терминале введите следующую команду и нажмите Enter:

who -r

Вы должны увидеть вывод, похожий на следующий:

           run-level 5  <DATE> <TIME>

Этот вывод подтверждает, что система в настоящее время находится на уровне запуска 5. Дата и время указывают, когда система перешла на этот уровень запуска.

Сравнивая вывод команд runlevel и who -r, можно заметить, что обе команды предоставляют информацию о текущем уровне запуска, хотя их форматы различны. Команда who -r дает более информативный вывод, включающий дату и время.

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

Практикуйтесь в использовании команд runlevel и who -r, чтобы чувствовать себя комфортно при проверке состояния работы системы.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка целевого состояния по умолчанию с помощью команды systemctl get-default

Как уже упоминалось ранее, современные дистрибутивы Linux часто используют systemd вместо традиционной системы SysVinit. systemd использует "цели" (targets), которые концептуально похожи на уровни запуска (runlevels), но предоставляют больше гибкости.

Цель представляет собой группу единиц systemd (таких как службы, точки монтирования, сокеты и т.д.), которые система должна запустить или остановить, чтобы достичь желаемого состояния. Цель по умолчанию - это состояние, в которое система загружается.

Мы можем использовать команду systemctl для взаимодействия с systemd. Подкоманда get-default показывает целевую цель по умолчанию.

Примечание: Из - за особенностей среды LabEx, работающей в контейнере Docker, команда systemctl может вести себя по - другому или показывать ограниченную информацию по сравнению с полной установкой операционной системы. Однако мы все еще можем использовать ее, чтобы понять концепцию целей по умолчанию.

В терминале введите следующую команду и нажмите Enter:

systemctl get-default

Вы должны увидеть вывод, похожий на следующий:

graphical.target

Этот вывод указывает, что целевой цель по умолчанию для этой системы является graphical.target. Эта цель обычно включает все службы, необходимые для многопользовательской системы с графической рабочей средой, что соответствует уровню запуска 5, который мы видели ранее.

Другие распространенные цели включают:

  • multi - user.target: Аналогичен уровню запуска 3, представляет многопользовательскую систему без графического интерфейса.
  • rescue.target: Однопользовательский режим для восстановления системы.
  • reboot.target: Используется для перезагрузки системы.
  • poweroff.target: Используется для выключения системы.

Хотя в среде LabEx вы, возможно, не сможете изменить целевую цель по умолчанию, знание того, как проверить ее с помощью команды systemctl get-default, является фундаментальным навыком для управления системами на основе systemd.

Теперь вы узнали три разных способа проверки состояния работы системы или ее состояния загрузки по умолчанию: runlevel, who -r и systemctl get-default.

Нажмите Продолжить, чтобы завершить этот практический урок.

Резюме

В этом практическом уроке мы научились проверять состояние работы системы в Linux. Мы начали с изучения концепции уровней запуска (runlevels), которые представляют различные состояния системы, и использовали команду runlevel для определения текущего уровня запуска. Мы поняли смысл вывода команды, включая предыдущий и текущий уровни запуска, и рассмотрели общие уровни запуска в традиционных системах SysVinit.

Затем мы узнали альтернативный способ проверки уровня запуска с помощью команды who -r, которая предоставляет похожую информацию о текущем уровне запуска системы. Наконец, мы изучили, как современные дистрибутивы Linux, которые часто используют systemd, управляют состояниями системы с помощью целей (targets) вместо традиционных уровней запуска, и использовали команду systemctl get-default для определения целевой цели по умолчанию.