web-dev-qa-db-ja.com

systemdでユーザーサービスとシステムサービスを区別する方法は?

私は質問をしました 昨日 そして答えられたコメントの1つはそれが「ユーザーサービス」であると共有されたということでした。ここで、「ユーザーサービス」とシステムサービスを区別する方法を教えてください。

5
shirish

this のドキュメントによると、ユニットファイルはパスで区別できます。

例えば;ユニットファイルが

/etc/systemd/system
/usr/lib/systemd/system
/run/systemd/system

ディレクトリ、このユニットはシステムに属しています。

にある場合

~/.config/systemd/user/*
/etc/systemd/user/*
$XDG_RUNTIME_DIR/systemd/user/*
/run/systemd/user/*
~/.local/share/systemd/user/*
/usr/lib/systemd/user/*

ディレクトリ、それはユーザーに属しています。

6
LittleSmurfie

システムユニットディレクトリのsystemd(1)マニュアルページによると:

Systemdシステムマネージャは、さまざまなディレクトリからユニット構成を読み取ります。ユニットファイルをインストールするパッケージは、以下によって返されるディレクトリにそれらを配置します。

pkg-config systemd --variable=systemdsystemunitdir

チェックされる他のディレクトリは次のとおりです。

/usr/local/lib/systemd/system
/usr/lib/systemd/system

ユーザー構成が常に優先されます。

pkg-config systemd --variable=systemdsystemconfdir

システム構成ディレクトリのパスを返します。パッケージは、systemctl(1)ツールのenableおよびdisableコマンドを使用してのみ、これらのディレクトリの内容を変更する必要があります。ディレクトリの完全なリストはsystemd.unit(5)にあります。

ユーザーユニットディレクトリの場合:

ユーザーユニットディレクトリにも同様のルールが適用されます。ただし、ここではXDGベースディレクトリ仕様[6]に従ってユニットを検索します。アプリケーションは、以下によって返されるディレクトリにユニットファイルを配置する必要があります。

pkg-config systemd --variable=systemduserunitdir

グローバル構成は、以下によって報告されるディレクトリで行われます。

pkg-config systemd --variable=systemduserconfdir

Systemctl(1)ツールのenableコマンドとdisableコマンドは、ユニットのグローバル(つまり、すべてのユーザー)とプライベート(1人のユーザー)の両方の有効化/無効化を処理できます。ディレクトリの完全なリストはsystemd.unit(5)にあります。

これらはsystemdのルールであり、パッケージャーに適切な場所に異なるファイルを配置するように指示します。これらのルールを適切に実行するのはパッケージャーの責任です。

4
airhuff