시스템의 "별칭" 활성화 상태

시스템의 "별칭" 활성화 상태

"별칭" 상태의 유닛 파일에 대한 예를 들어줄 수 있는 사람이 있나요?

문서에는 "이름은 별칭(다른 유닛 파일에 대한 심볼릭 링크)입니다."라고 나와 있습니다.

그러나 내가 이해한 바에 따르면, 단위 파일이 활성화되지 않고 심볼릭 링크인 경우 이는 systemd 범위 외부의 파일을 가리키는 심볼릭 링크이거나(따라서 "링크된" 상태) 파일을 가리키는 심볼릭 링크입니다. systemd 내부의 파일에 도달했습니다(따라서 "간접" 상태).

편집: 보다 구체적으로 다음과 같은 샘플 서비스가 있다고 가정해 보겠습니다.

$ cat myservice.sh 
while true
do
echo "Looping"
sleep 30
done

그리고 유닛 파일은 다음과 같습니다.

$ cat myservice.service
[Unit]
Description=Example Service.

[Service]
Type=simple
ExecStart=/bin/bash ~/myservice.sh

[Install]
WantedBy=multi-user.target

myservice.service출력 과 같은 단위 에 대한 별칭을 만들고 싶다면 myalias.service -> myservice.service어떻게 해야 합니까?systemctl is-enabled myaliasalias

답변1

systemd.special(7)별칭을 사용해야 하는 여러 단위가 나열되어 있습니다.

매뉴얼 페이지의 예는 다음과 같습니다.

   default.target
      The default unit systemd starts at bootup. Usually, this should be
      aliased (symlinked) to multi-user.target or graphical.target. See
      bootup(7) for more discussion.

      The default unit systemd starts at bootup can be overridden with the 
      systemd.unit= kernel command line option, or more conveniently, with 
      the short names like single, rescue, 1, 3, 5, ...; see systemd(1).

Debian 테스트의 단위 파일을 검사하면 다음이 표시됩니다.

$ systemctl cat default.target
# /lib/systemd/system/graphical.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

$ systemctl status default.target
● graphical.target - Graphical Interface
     Loaded: loaded (/lib/systemd/system/graphical.target; static)
     Active: active since Tue 2020-08-18 08:01:45 CEST; 4 days ago
       Docs: man:systemd.special(7)

Aug 18 08:01:45 stewbian systemd[1]: Reached target Graphical Interface.

$ systemctl is-enabled default.target
alias

다른 별칭을 보려면 ls마스크가 아닌 모든 링크를 카탈로그화하고 grep할 수 있습니다.

$ ls -l /lib/systemd/system/ | grep -e '^l' | grep -v '/dev/null'
lrwxrwxrwx [email protected] -> [email protected]
lrwxrwxrwx ctrl-alt-del.target -> reboot.target
lrwxrwxrwx dbus-org.freedesktop.hostname1.service -> systemd-hostnamed.service
lrwxrwxrwx dbus-org.freedesktop.locale1.service -> systemd-localed.service
lrwxrwxrwx dbus-org.freedesktop.login1.service -> systemd-logind.service
lrwxrwxrwx dbus-org.freedesktop.timedate1.service -> systemd-timedated.service
lrwxrwxrwx default.target -> graphical.target
lrwxrwxrwx gdm3.service -> gdm.service
lrwxrwxrwx kmod.service -> systemd-modules-load.service
lrwxrwxrwx plymouth-log.service -> plymouth-read-write.service
lrwxrwxrwx plymouth.service -> plymouth-quit.service
lrwxrwxrwx procps.service -> systemd-sysctl.service
lrwxrwxrwx runlevel0.target -> poweroff.target
lrwxrwxrwx runlevel1.target -> rescue.target
lrwxrwxrwx runlevel2.target -> multi-user.target
lrwxrwxrwx runlevel3.target -> multi-user.target
lrwxrwxrwx runlevel4.target -> multi-user.target
lrwxrwxrwx runlevel5.target -> graphical.target
lrwxrwxrwx runlevel6.target -> reboot.target
lrwxrwxrwx speech-dispatcher.service -> speech-dispatcherd.service
lrwxrwxrwx udev.service -> systemd-udevd.service

내 컴퓨터의 유일한 비정적 서비스 예는 다음과 같습니다 speech-dispatcher.service.

$ systemctl is-enabled speech-dispatcher.service
alias
$ systemctl status speech-dispatcher.service
● speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers
     Loaded: loaded (/lib/systemd/system/speech-dispatcherd.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

비활성화되어 있음을 알 수 있습니다. 활성화하면 다음과 같은 결과를 얻습니다.

$ systemctl enable speech-dispatcher.service
Synchronizing state of speech-dispatcher.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable speech-dispatcher
Created symlink /etc/systemd/system/speech-dispatcher.service → /lib/systemd/system/speech-dispatcherd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/speech-dispatcherd.service → /lib/systemd/system/speech-dispatcherd.service.

$ systemctl status speech-dispatcher.service
● speech-dispatcherd.service - Speech-Dispatcher, common interface to speech synthesizers
     Loaded: loaded (/lib/systemd/system/speech-dispatcherd.service; enabled; vendor preset: enabled)
     Active: inactive (dead)

stew ~ $ systemctl is-enabled speech-dispatcher.service
alias

관련 정보