システムの「エイリアス」アクティブ状態

システムの「エイリアス」アクティブ状態

「エイリアス」状態のユニットファイルの例を挙げることができる人はいますか?

ドキュメントには、「名前はエイリアス(他のユニットファイルへのシンボリックリンク)です」と記載されています。

しかし、私が理解しているように、ユニットファイルがアクティブではなくシンボリックリンクである場合、これは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

関連情報