어떤 유닛이 간접적인 상태로 다른 유닛을 활성화하는지 확인하는 방법을 알고 싶습니다.
저는 Gnome과 Debian 서버를 사용하여 Arch를 실행합니다. 내 Debian 컴퓨터에서는 systemctl list-unit-files --type=target --state=enabled
예상대로 다음과 같은 출력을 볼 수 있습니다 .
default.target enabled
multi-user.target enabled
multi-user.target
그러나 Arch 데스크톱에서는 : 및 graphical.target
(아치의 기본값)이 둘 다 활성화되어 있음에도 불구하고 놀랍게도 그렇지 않습니다 . 이 단위 파일의 상태를 확인하면 둘 다입니다. indirect
종속성을 나열 graphical.target
하면 gdm.service
및 multi-user.target
. gdm 단위 파일에는 Also=
섹션이 표시되지 않습니다 [Install]
. 그러면 무엇이 활성화되나요 graphical.target
?
이 "간접적인" 솔루션을 사용하는 이유는 무엇입니까?
답변1
에서 man systemd.special
:
그래픽 타겟A special target unit for setting up a graphical login screen. This pulls in multi-user.target. Units that are needed for graphical logins shall add Wants= dependencies for their unit to this unit (or multi-user.target) during installation. This is best configured via WantedBy=graphical.target in the unit's [Install] section.
따라서 귀하의 콘텐츠는 gdm.service
더 많은 것을 설명할 것입니다...
다음은 내 시스템의 두 서비스에 대한 정보입니다. "정적"이라는 점에 유의하세요.
$ systemctl status multi-user.target graphical.target
● multi-user.target - Multi-User System
Loaded: loaded (/lib/systemd/system/multi-user.target; static)
Active: active since Mon 2023-09-04 09:34:27 +03; 11h ago
Until: Mon 2023-09-04 09:34:27 +03; 11h ago
Docs: man:systemd.special(7)
Sep 04 09:34:27 kubuntu systemd[1]: Reached target multi-user.target - Multi-User System.
● graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static)
Active: active since Mon 2023-09-04 09:34:27 +03; 11h ago
Until: Mon 2023-09-04 09:34:27 +03; 11h ago
Docs: man:systemd.special(7)
Sep 04 09:34:27 kubuntu systemd[1]: Reached target graphical.target - Graphical Interface.
$ systemctl cat multi-user.target graphical.target
# /lib/systemd/system/multi-user.target
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes
# /lib/systemd/system/graphical.target
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
$ ls -la /lib/systemd/system/{multi-user,graphical}.target
-rw-r--r-- 1 root root 606 Jan 26 2023 /lib/systemd/system/graphical.target
-rw-r--r-- 1 root root 540 Jan 26 2023 /lib/systemd/system/multi-user.target