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

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

私は質問をした昨日答えられたコメントの1つは、誰かがこれが「ユーザーサービス」だと思ったことです。今、「ユーザーサービス」とシステムサービスを区別する方法は?

答え1

~によるとこれドキュメント、ユニットファイルはパスで区切ることができます。

たとえば、単位ファイルが次の場所にある場合

/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/*

ユーザーに属するディレクトリです。

答え2

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

systemd システム管理者は、さまざまなディレクトリからデバイス構成を読み込みます。ユニットファイルをインストールするパッケージは、そのファイルを次のコマンドで返されるディレクトリに配置する必要があります。

pkg-config systemd --variable=systemdsystemunitdir

確認された他のディレクトリは次のとおりです。

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

ユーザー設定は常に優先的に適用されます。

pkg-config systemd --variable=systemdsystemconfdir

システム構成ディレクトリのパスを返します。パッケージは、systemctl(1)ツールの有効化および無効化コマンドを使用して、これらのディレクトリの内容のみを変更できます。ディレクトリ全体のリストはsystemd.unit(5)にあります。

次に、ユーザー単位のディレクトリの場合:

カスタムコンポーネントディレクトリにも同様の規則が適用されます。ただし、ここではXDGの基本カタログ仕様[6]に従って単位を探します。アプリケーションは、次のコマンドで返されるディレクトリにユニットファイルを配置する必要があります。

pkg-config systemd --variable=systemduserunitdir

グローバル設定はレポートディレクトリで行われます。

pkg-config systemd --variable=systemduserconfdir

systemctl(1)ツールの有効化と無効化コマンドは、デバイスのグローバル(つまり、すべてのユーザーに対して)および個人(1人のユーザーに対して)の有効化/無効化を処理します。ディレクトリ全体のリストはsystemd.unit(5)にあります。

参考にしてください体系的なさまざまなファイルを配置するための正しい場所をパッケージャに案内し、パッケージャが正しく従う規則です。

関連情報