
ユーザーのセッションを開始し、そのセッションでコマンドを実行するシステムサービスを作成しようとしています。 PAMName を使用して、次のように適切なセッションを開始します。
[Unit]
Description=My service instance for %I
After=network.target
[Service]
Type=simple
User=%I
Environment=XDG_SESSION_CLASS=user
PAMName=my-service
# Use basic echo for testing unit functionality.
ExecStart=/bin/echo Test output
StandardOutput=journal
# Use same fd as stdout
StandardError=inherit
[Install]
WantedBy=multi-user.target
私が経験している問題は、systemctl status
.itに出力が表示されないことです。するに表示されているjournalctl -e
ため、すでに記録されていますが、デバイスとは関係ありません。 PAMNameのドキュメントは次のように言います。
このオプションがセルで使用されている場合、有効にすると、デフォルトのセルプロセスが独自のセッションスコープセルに移行される可能性が高くなります(PAM構成によっては)。したがって、プロセスは、最初に開始された(PAMName =が構成されている)単位とセッション範囲単位の2つの単位に関連付けられます。ただし、このプロセスのすべての子プロセスはセッション範囲単位にのみ関連付けられます。
systemctl status
子プロセスの出力が表示されなくても、二重の関連付けのために基本プロセスの出力が最小限に表示されることを望んでいましたが、出力がまったくないようです。これにより、サービスを開始するときに何が間違っているかを確認したり、サービスの過去のログを表示したりするのが難しくなります。
PAMNameを使用するときにログメッセージがサービスユニットに関連付けられているように見える方法はありますか(stdoutまたは他のロギングメカニズムを介して)。