
詳細を見逃したらすみません。 systemdのすべての領域がわからない場合があります。他のサービスの後にイン監視サービスが自動的に開始されるようにしたいのですが、なぜデフォルトで無効になっているのかわかりません。
> /lib/systemd/system# ls |grep phosphor-watchdog
>
> [email protected]
>
> [email protected]
/lib/systemd/system# systemctl status [email protected]
● [email protected] - Phosphor poweron watchdog
Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/[email protected]
└─poweron.conf
Active: inactive (dead)
これはPhosphorus Watchdogサービスのサービスファイルです。
[Unit]
Description=Phosphor %I watchdog
[email protected]
After=pwr-monitor.service
[Service]
Restart=always
EnvironmentFile={envfiledir}/obmc/watchdog/%I
ExecStart=/usr/bin/env phosphor-watchdog --continue --service=${{SERVICE}} --path=${{DEVPATH}} --target=${{TARGET}}
SyslogIdentifier=phosphor-watchdog
[Install]
WantedBy=multi-user.target
そして[Eメール保護]/poweron.conf:
[Unit]
[email protected]
[email protected]
[email protected]
「WantedBy = multi-user.target」があるにもかかわらず、私のサービスが常に無効になる理由を知りたいです。
注:systemctlを有効にすると、すべてがうまく機能しますが、デフォルトでは有効にしたいと思います。
より多くの情報を提供する必要がある場合は、お知らせください。ありがとうございます。
答え1
[Install]
WantedBy=multi-user.target
すべてman systemd.unit
:
[Install] は実行時に systemd(1) によって解釈されず、デバイスのインストール中に systemctl(1) ツールの有効化および無効化コマンドによって使用されます。
したがって、このセクションに表示される内容は、使用しない[Install]
限り効果はありませんsystemctl enable
。
注:systemctlを使用すると、すべてがうまく機能します。
これは予想される動作です。 systemctl enable
継続的なシンボリックリンクが追加され、今から無効になるまで発射するたびにデバイスが発射されます。
しかし、基本的に有効にしたいと思います。
インストールは単純なファイルのコピー以上です。通常、パッケージは次のことを行います。
- サービスをインストールします。
/lib/systemd/system/
systemctl enable
提供するsystemctl start
提供する
したがって、インストールの一部はでなければなりませんsystemctl enable
。
systemdの初期には、基本的にサービスを有効にしたくない人が多かったことを覚えています。たとえば、Archパッケージにはデフォルトでenable
/ servicesがありませんstart
。
Debianには、直接呼び出さずにdeb-systemd-helper
パッケージで使用するhelperというプログラムがあります。有効にした項目に基づいて特定のデバイスを使用するかどうかを決定しますが、アップグレードする前に明示的に無効/遮断した場合は決定を尊重するsystemctl enable
などの作業を実行します。また、アップデート時にデバイスをリセット/再ロードしたり、デバイスをアンロードする前に停止したりするなど、いくつかの便利なタスクを実行することもできます。enable
vendor preset