이름은 같지만 내용이 다른 시스템화된 대상 유닛

이름은 같지만 내용이 다른 시스템화된 대상 유닛

저는 Linux Mint 20.3 Cinnamon을 사용하고 있습니다.

$ systemctl --user get-default
default.target
$ ls -al /lib/systemd/system/default.target
lrwxrwxrwx 1 root 16 Jan 10 05:56 /lib/systemd/system/default.target -> graphical.target
$ \cat /lib/systemd/system/default.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  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
  • 나는 default.target다음과 같이 서로 다른 콘텐츠를 가진 두 개의 서로 다른 위치에 있습니다.
$ \cat ~/.config/systemd/user/default.target
#  SPDX-License-Identifier: LGPL-2.1+
#
#  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=Main User Target
Documentation=man:systemd.special(7)
Requires=basic.target
After=basic.target
AllowIsolate=yes

질문

  1. /lib/systemd/system/default.target서비스 단위 파일 내에서 사용자 단위를 어떻게 지정합니까 ?
  2. 특정 서비스 단위 파일이 어떤 기본 대상을 사용하는지 어떻게 알 수 있나요?
  3. systemctl --user get-defaultdefault.target 중 어느 것을 언급하고 있나요?

답변1

대상의 현재 위치를 알려면 다음과 같이 상태를 쿼리하면 됩니다.

systemctl --user status default.target

● default.target - Main User Target
     Loaded: loaded (/usr/lib/systemd/user/default.target; static)
[...]


systemctl status default.target
● graphical.target - Graphical Interface
     Loaded: loaded (/lib/systemd/system/graphical.target; indirect; vendor preset: enabled)
[...]

단위를 검색하는 순서를 제공합니다.설명서에(시스템/사용자 유닛 검색 경로로)

즉, .configlocal-dir에 더미 대상을 만들고 시작하면 검색 경로에서 더 높기 때문에 먼저 로드됩니다.

$cat ~/.config/systemd/user/default.target

[Unit]
Description=just exists

$systemctl --user daemon-reload
$systemctl --user start default.target
$systemctl --user status default.target

● default.target - just exists
     Loaded: loaded (/home/felixjn/.config/systemd/user/default.target; static)

즉, 장치 검색 경로는 $PATH셸의 변수와 같습니다. 경로와 일치하는 첫 번째 장치가 선택됩니다.

사용자 경로와 시스템 경로는 서로 다르며 중복되지 않는다는 점을 아는 것이 중요합니다!

관련 정보