デスクトップセッションなしでSystemdユーザーサービスを使用する方法[D-Busなし]

デスクトップセッションなしでSystemdユーザーサービスを使用する方法[D-Busなし]

明示的に停止するまで実行する必要があるユーザーレベルのサービス(Python / Java / Node JSプロセス)を設定しようとしています。非rootユーザーとしてサービスを開始/停止する必要があります。

~/.config/systemd/user/ の下にサービスファイルを作成しました。ロードしようとすると、systemctl - ユーザーデーモンの再ロード、次のエラーで失敗します。

$ systemctl --user daemon-reload
Failed to get D-Bus connection: No such file or directory

D-Busはデスクトップセッションがなければ実行されないことを知っていますが、デスクトップセッションがなければ、会社が提供する仮想マシンの1つです。 Linuxサーバーではデスクトップセッションを有効にしません。

$ ps -ef | grep systemd | grep -v grep
root          1      0  0 Jul25 ?        00:01:33 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root        544      1  0 Jul25 ?        00:00:33 /usr/lib/systemd/systemd-journald
root        591      1  0 Jul25 ?        00:00:03 /usr/lib/systemd/systemd-udevd
dbus        783      1  0 Jul25 ?        00:01:21 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root        857      1  0 Jul25 ?        00:00:34 /usr/lib/systemd/systemd-logind

デスクトップセッションなしでユーザーレベルのサービスを作成するには?

答え1

たった2つのコマンドで動作します。

cat << 'EOF' >> ~USERNAME/.profile
export XDG_RUNTIME_DIR=/run/user/$(id -u)
EOF
loginctl enable-linger $USERNAME

関連情報