- Глава 10. Управление сервисами в systemd. 10.3 Работа с таргетами в systemd
- 10.3.1. Просмотр таргета по умолчанию
- 10.3.2. Просмотр текущего таргета
- Пример 10.11. Просмотр текщего таргета
- 10.3.3. Смена таргета по умолчанию
- Пример 10.12. Смена таргета по умолчанию
- 10.3.4. Смена текущего таргета
- Пример 10.13. Смена текущего таргета
- 10.3.5. Переход в режим восстановления
- Пример 10.14. Переход в режим восстановления
- 10.3.6. Переход в аварийный режим
Глава 10. Управление сервисами в systemd. 10.3 Работа с таргетами в systemd
Предыдущие версии RHEL, которые распространялись с SysV init или Upstart, включали предопределенный набор уровней запуска (ранлевелов), которые представляли собой конкретные режимы работы. Ранлевелы нумеровались от 0 до 6 и определяли набор системных сервисов, которые запускались когда системный администратор запускал определенный ранлевел. В RHEL7 концепция уровней запуска была заменена таргетами systemd.
Таргеты systemd представлены таргет-юнитами. Файлы этих юнитов имеют расширение .target и их предназначение в том, чтобы объединить другие юниты systemd в цепочку зависимостей. Например, юнит graphical.target , который используется для запуска графического интерфейса, запускает такие сервисы как GNOME Display Manager (gdm.service) или Accounts Service (accounts-daemon.service), а также активирует таргет multi-user.target . Аналогично, юнит multi-user.target запускает другие важные системные сервисы, такие как NetworkManager ( NetworkManager.service ) или D-Bus ( dbus.service ), и активирует другой таргет с именем basic.target .
RHEL распространяется с несколькими предопределенными таргетами, которые похожи на стандартные уровни выполнения предыдущих релизов системы. По соображениям совместимости он также предоставляет псевдонимы для этих таргетов, которые непосредственно отображают их на уровни запуска SysV. В таблице 10.6 «Сравнение уровней запуска SysV с таргетами systemd» представлен полный список уровней запуска SysV и соответствующих им таргетов.
Ранлевел | Таргет | Описание |
---|---|---|
0 | runlevel0.target, poweroff.target | Завершение работы и отключение системы |
1 | runlevel1.target, rescue.target | Оболочка восстановления |
2 | runlevel2.target, multi-user.target | Многопользовательская система без графоболочки |
3 | runlevel3.target, multi-user.target | Многопользовательская система без графоболочки |
4 | runlevel4.target, multi-user.target | Многопользовательская система без графоболочки |
5 | runlevel5.target, graphical.target | Многопользовательская система с графоболочкой |
6 | runlevel6.target, reboot.target | Выключение и перезагрузка системы |
Чтобы просмотреть, изменить или настроить таргеты systemd, используйте утилиту systemctl , как описано в таблице 10.7, «Сравнение команд SysV init с systemctl» и в следующих разделах. Команды runlevel и telinit по-прежнему доступны в системе и работают должным образом, но включены только по соображениям совместимости и их следует избегать.
Старая команда | Новая команда | Описание |
---|---|---|
runlevel | systemctl list-units –type target | Список загруженных таргетов |
telinit runlevel | systemctl isolate name.target | Смена текущего таргета |
10.3.1. Просмотр таргета по умолчанию
Чтобы определить какой таргет используется по умолчанию, запустите следующую команду:
Эта команда читает симлинк, расположенный в /etc/systemd/system/default.target, и отображает результат. Для получения информации о том, как сменить таргет по умолчанию см. в разделе 10.3.3, “Смена таргета по умолчанию”. Для получения списка всех загруженных таргетов см. раздел 10.3.2,”Просмотр текущих таргетов”.
Пример 10.10. Просмотр таргета по умолчанию
Чтобы отобразить таргет по умолчанию, выполните:
~]$ systemctl get-default graphical.target
~]$ systemctl get-default graphical.target
10.3.2. Просмотр текущего таргета
Чтобы получить список загруженных таргетов, наберите следующую команду:
systemctl list-units --type target
systemctl list-units —type target
Для каждого таргета эта команда отображает полное имя (UNIT), за ним следует примечание загружен ли юнит (LOAD), высокоуровневый (ACTIVE) и низкоуровневый (SUB) статус юнита, и краткое описание (DESCRIPTION).
По умолчанию команда systemctl list-units отображает только активные юниты. Если вы хотите просмотреть список всех загруженных юнитов независимо от их состояния, запустите эту команду с флагом —all или -a :
systemctl list-units --type target --all
systemctl list-units —type target —all
Как сменить текущий таргет см. в разделе 10.3.4, “Смена текущего таргета”.
Пример 10.11. Просмотр текщего таргета
~]$ systemctl list-units --type target UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network.target loaded active active Network paths.target loaded active active Paths remote-fs.target loaded active active Remote File Systems sockets.target loaded active active Sockets sound.target loaded active active Sound Card spice-vdagentd.target loaded active active Agent daemon for Spice guests swap.target loaded active active Swap sysinit.target loaded active active System Initialization time-sync.target loaded active active System Time Synchronized timers.target loaded active active Timers LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 17 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
~]$ systemctl list-units —type target UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network.target loaded active active Network paths.target loaded active active Paths remote-fs.target loaded active active Remote File Systems sockets.target loaded active active Sockets sound.target loaded active active Sound Card spice-vdagentd.target loaded active active Agent daemon for Spice guests swap.target loaded active active Swap sysinit.target loaded active active System Initialization time-sync.target loaded active active System Time Synchronized timers.target loaded active active Timers LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 17 loaded units listed. Pass —all to see loaded but inactive units, too. To show all installed unit files use ‘systemctl list-unit-files’.
10.3.3. Смена таргета по умолчанию
Чтобы сконфигурировать систему на использование другого таргета по умолчанию, выполните от root:
systemctl set-default name.target
systemctl set-default name.target
Замените name на имя таргета, который вы хотите сделать дефолтным (например, multi-user). Эта команда заменяет файл /etc/systemd/system/default.target символической ссылкой на /usr/lib/systemd/system/name.target , где name это имя таргета, который вы хотите использовать. Как сменить текущий таргет см. в разделе 10.3.4, “Смена текущего таргета”. Как посмотреть информацию о текущем таргете, см. раздел 10.3.2,”Просмотр текущих таргетов”.
Пример 10.12. Смена таргета по умолчанию
Чтобы скофигурировать систему для использования multi-user.target по умолчанию, выполните от root:
~]# systemctl set-default multi-user.target rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
~]# systemctl set-default multi-user.target rm ‘/etc/systemd/system/default.target’ ln -s ‘/usr/lib/systemd/system/multi-user.target’ ‘/etc/systemd/system/default.target’
10.3.4. Смена текущего таргета
Чтобы сменить таргет в текущей сессии, наберите от root:
systemctl isolate name.target
systemctl isolate name.target
Замените name на имя таргета, который вы хотите использовать (например, multi-user). Эта команда запускает таргет с именем name и немедленно останавливает все остальные. Как сменить таргет по умолчанию см. раздел 10.3.3, “Смена таргета по умолчанию”. Как просмотреть список загруженных таргетов см. в разделе 10.3.2,”Просмотр текущих таргетов”.
Пример 10.13. Смена текущего таргета
Чтобы выключить графический интерфейс и сменить его на multi-user.target в текущей сессии, запустите от root:
~]# systemctl isolate multi-user.target
~]# systemctl isolate multi-user.target
10.3.5. Переход в режим восстановления
Режим восстановления предоставляет однопользовательскую среду и позволяет восстановить систему в ситуациях, когда система не может завершить обычный процесс загрузки. В режиме восстановления система пытается смонтировать все локальные файловые системы и запустить некоторые системные сервисы, но не активирует сетевые интерфейсы и не позволяет одновременно входить нескольким пользователям в систему. В RHEL 7 режим восстановления эквивалентен однопользовательскому режиму и требует ввода рутового пароля.
Смена текущего таргета и переход в режим восстановления в текущей сессии (от root):
Этак команда похожа на systemctl isolate rescue.target , но она также отправляет информационное сообщение всем пользователям, которые в настоящее время вошли в систему. Чтобы система не отправляла сообщение, запустите команду с опцией —no-wall :
Пример 10.14. Переход в режим восстановления
~]# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST): The system is going down to rescue mode NOW!
~]# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST): The system is going down to rescue mode NOW!
10.3.6. Переход в аварийный режим
Аварийный режим предоставляет минимально возможную среду и позволяет восстановить систему даже тогда, когда она не может загрузиться в режим восстановления. Система монтирует root file system только для чтения и запускает только несколько основных сервисов, не пытается подключить другие файловые системы и не активирует сеть. В RHEL 7 аварийный режим требует ввода пароля root’а.
Чтобы сменить текущий таргет на аварийный режим, введите от root’а:
Эта команда похожа на systemctl isolate emergency.target , но она дополнительно отправляет сообщение всем пользователям, которые в настоящее время вошли в систему. Чтобы система не отправляла сообщение, запустите команду с опцией —no-wall :
systemctl --no-wall emergency
systemctl —no-wall emergency
Пример 10.15. Переход в аварийный режим
Чтобы перейти в аварийный режим с отправкой сообщения всем пользователям, запустите от root’а:
~]# systemctl --no-wall emergency
~]# systemctl —no-wall emergency